PySide/PyQt5 QSettings 未保存到 HKEY_LOCAL_MACHINE
Posted
技术标签:
【中文标题】PySide/PyQt5 QSettings 未保存到 HKEY_LOCAL_MACHINE【英文标题】:PySide/PyQt5 QSettings not saving to HKEY_LOCAL_MACHINE 【发布时间】:2020-04-24 19:14:54 【问题描述】:我正在尝试保存应用程序和“组织”特定数据,并选择使用QSettings
类。事情总体上运行良好,但是我发现我无法保存到HKEY_LOCAL_MACHINE
注册表,当您将QSettings
范围设置为 System.我制作了一个精简的应用程序来尝试保存到所有四个位置,如下所示。
application_user_settings
和 company_user_settings
保存在正确的位置,但 application_system_settings
和 company_system_settings
根本不保存。此外,在下面的脚本中,我为每个实例打印出QSettings
fileName
,它们打印出预期的路径。
我认为这可能是管理员权限问题,所以我重新打开了我正在使用的 IDE Pycharm,并以管理员身份运行它,它应该以管理员身份运行所有 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
HKEY_LOCAL_MACHINE\SOFTWARE
【问题讨论】:
【参考方案1】:以管理员身份运行 pycharm 显然实际上并没有以管理员权限运行 python 脚本。您需要以管理员身份打开一个命令窗口,然后通过它运行您的 python 脚本。我刚刚遇到了同样的问题,这种技术解决了它。在以前版本的 python2 或 qt4(不确定是哪个,但可能是 qt4)中......代码将更新注册表而无需使用管理员运行。在我的用例中,这实际上很烦人。我希望在不需要管理员的情况下在 SystemScope 进行更新:(
【讨论】:
以上是关于PySide/PyQt5 QSettings 未保存到 HKEY_LOCAL_MACHINE的主要内容,如果未能解决你的问题,请参考以下文章