Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PySide/PyQt5 QSettings未保存到HKEY_本地_机器_Python_Windows_Persistence_Pyside2_Qsettings - Fatal编程技术网

Python PySide/PyQt5 QSettings未保存到HKEY_本地_机器

Python PySide/PyQt5 QSettings未保存到HKEY_本地_机器,python,windows,persistence,pyside2,qsettings,Python,Windows,Persistence,Pyside2,Qsettings,我试图保存应用程序和“组织”特定的数据,并选择使用QSettings类。总的来说,一切正常,但是我发现我无法保存到HKEY_LOCAL_机器注册表,当您将QSettings范围设置为系统时,注册表就是QSettings的位置。我制作了一个精简的应用程序,尝试保存到所有四个位置,如下所示 应用程序用户设置和公司用户设置保存在正确的位置,但是应用程序系统设置和公司系统设置根本不保存。此外,在下面的脚本中,我已打印出每个实例的QSettings文件名,并打印出预期的路径 我认为这可能是管理员权限问题,

我试图保存应用程序和“组织”特定的数据,并选择使用
QSettings
类。总的来说,一切正常,但是我发现我无法保存到
HKEY_LOCAL_机器
注册表,当您将
QSettings
范围设置为系统时,注册表就是
QSettings
的位置。我制作了一个精简的应用程序,尝试保存到所有四个位置,如下所示

应用程序用户设置
公司用户设置
保存在正确的位置,但是
应用程序系统设置
公司系统设置
根本不保存。此外,在下面的脚本中,我已打印出每个实例的
QSettings
文件名
,并打印出预期的路径

我认为这可能是管理员权限问题,所以我重新打开了我正在使用的IDE 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\U当前用户\软件

HKEY\U本地\U机器\软件


以管理员身份运行pycharm显然并不实际运行具有管理员权限的python脚本。您需要以管理员的身份打开一个命令窗口,然后运行python脚本。我只是遇到了同样的问题,这个技术解决了它。在python2或qt4的早期版本中(不确定是哪个,但可能是qt4)。。。该代码将更新注册表,而无需与admin一起运行。在我的用例中,这实际上很烦人。我希望在SystemScope上更新,而无需管理员:(

以管理员身份运行pycharm显然并不实际运行具有管理员权限的python脚本。您需要以管理员身份打开一个命令窗口,然后运行python脚本。我刚刚遇到了同样的问题,这项技术解决了它。在python2或qt4的早期版本中(不确定是哪个,但可能是qt4)…该代码将更新注册表,而无需与管理员一起运行。在我的用例中,这实际上很烦人。我希望在SystemScope上更新,而无需使用管理员:(