PySide / PyQt5 QSettings не сохраняются в HKEY_LOCAL_MACHINE - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь сохранить данные приложения и "организации", указанные c, и решил использовать класс QSettings. В целом все работает хорошо, однако я обнаружил, что не могу сохранить в реестре HKEY_LOCAL_MACHINE, который является местоположением для QSettings, когда для области QSettings установлено System. Я сделал урезанное приложение, чтобы попытаться сохранить его во всех четырех местах, описанных ниже.

application_user_settings и company_user_settings сохраняются в правильном месте, но application_system_settings и company_system_settings не сохраняются вообще. Кроме того, в приведенном ниже сценарии я распечатал QSettings fileName для каждого экземпляра, и они распечатали ожидаемые пути.

Я подумал, что это может быть проблема с привилегиями администратора, поэтому я снова открыл Pycharm, IDE, которую я использую, и запустил ее как администратор, который должен запускать все файлы python как администратор. Даже после этого у меня все та же проблема.

Кто-нибудь знает, почему QSettings неправильно сохраняет в области системы?

import sys
from PySide2.QtWidgets import QApplication, QMainWindow
from PySide2.QtCore import QSettings

app = QApplication(sys.argv)

window = QMainWindow()
window.show()


application_user_settings = QSettings('Company_Name', 'Application_Name')
application_user_settings.setValue('bruh_user', 1.0)
print(application_user_settings.fileName())  # \HKEY_CURRENT_USER\Software\Company_Name\Application_Name

company_user_settings = QSettings('Company_Name')
company_user_settings.setValue('bruh_user', 1.0)
print(company_user_settings.fileName())  # \HKEY_CURRENT_USER\Software\Company_Name\OrganizationDefaults

application_system_settings = QSettings(QSettings.SystemScope, 'Company_Name', 'Application_Name')
application_system_settings.setValue('bruh_system', 2.0)
print(application_system_settings.fileName())  # \HKEY_LOCAL_MACHINE\Software\Company_Name\Application_Name

company_system_settings = QSettings(QSettings.SystemScope, 'Company_Name')
company_system_settings.setValue('bruh_system', 2.0)
print(company_system_settings.fileName())  # \HKEY_LOCAL_MACHINE\Software\Company_Name\OrganizationDefaults


app.exec_()

HKEY_CURRENT_USER \ SOFTWARE

enter image description here

HKEY_LOCAL_MACHINE \ SOFTWARE

enter image description here

...