在 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 的注册表项 start
HKEY_CURRENT_USER\Software\MyCompany\testApp\

之后,每次调用 QSettings::setValue 都会修改给定键的值。

我不知道删除。

【讨论】:

【参考方案2】:

你不能。

QSettings 可以在 Windows 平台上使用 Windows 注册表作为后端来存储其设置。

它不是用于访问注册表的通用 API。

【讨论】:

但是其他应用程序是如何创建/删除注册表项的?谢谢。

以上是关于在 Qt 中,如何使用 QSettings 来创建/修改/删除 Windows 注册表项/值?的主要内容,如果未能解决你的问题,请参考以下文章

Qt软件开发-QSettings管理用户环境变量(修改输出)

Qt4 QSettings保存枚举值(例如Qt::CheckState)

使用 QSettings 配置 Log4Qt

Qt配置信息设置(QSettings在不同平台下的使用路径)

Qt中的QSettings这个类有.value这个成员函数吗?

清理“QSettings”注册表项的最佳方法(Windows 上的 Qt 5)