在 Qt 中,如何使用 QSettings 来创建/修改/删除 Windows 注册表项/值?
Posted
技术标签:
【中文标题】在 Qt 中,如何使用 QSettings 来创建/修改/删除 Windows 注册表项/值?【英文标题】:In Qt, how can I use QSettings to create/modify/remove windows registry key/value? 【发布时间】:2018-08-25 07:36:18 【问题描述】:我希望我的 Qt 应用程序能够访问 Windows 注册表。我做了一些研究,QSettings 可能是要走的路。假设我想把我的键/值放在这里:“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\testApp”,我的键是“开始”,值是“4”。
1.如何创建我的键/值?我试过了
QSettings settings("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\testApp", QSettings::NativeFormat);
settings.setValue("Start", 4);
但什么也没发生。我认为这可能是因为“testApp”之前不存在?如何创建“testApp”类?
2.如何删除我使用 QSettings 创建的内容?需要删除键/值以及“testApp”类。
谢谢!
【问题讨论】:
【参考方案1】:我已成功完成创建。创建就像修改一样,如果path不存在,就会被创建。至少在允许的范围内。尝试在 Microsoft/windows 域中设置密钥可能是您的问题的一部分。
首先您设置组织和应用程序名称。然后使用默认构造函数创建的每个 QSettings 都会获取这些信息,当您尝试设置特定值时,它将在注册表中创建结构:
QCoreApplication::setOrganizationName("MyCompany");
QCoreApplication::setApplicationName("testApp");
...
QSettings Settings;
Settings.setValue("start", 4);
将在
下创建具有值 4 的注册表项 startHKEY_CURRENT_USER\Software\MyCompany\testApp\
之后,每次调用 QSettings::setValue 都会修改给定键的值。
我不知道删除。
【讨论】:
【参考方案2】:你不能。
QSettings 可以在 Windows 平台上使用 Windows 注册表作为后端来存储其设置。
它不是用于访问注册表的通用 API。
【讨论】:
但是其他应用程序是如何创建/删除注册表项的?谢谢。以上是关于在 Qt 中,如何使用 QSettings 来创建/修改/删除 Windows 注册表项/值?的主要内容,如果未能解决你的问题,请参考以下文章
Qt软件开发-QSettings管理用户环境变量(修改输出)
Qt4 QSettings保存枚举值(例如Qt::CheckState)
Qt配置信息设置(QSettings在不同平台下的使用路径)