Qt如何写入HKLM

时间:2016-02-07 13:16:15

标签: c++ qt registry

在我的Qt5.5应用中,我试图写信给

  

HKEY_LOCAL_MACHINE \ SOFTWARE \微软\的Windows \ CurrentVersion \运行

注册表项,使用QSettings在每个帐户上启用自动运行,但即使使用管理员权限也无法执行此操作。你能告诉我我该怎么办?如果我尝试将此代码与HKCU一起使用以启用对当前用户的自动运行,那么它就可以正常工作。

QSettings bootUp("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", QSettings::NativeFormat);
bootUp.setValue("/MyApp", "\"" + QDir::currentPath() + "/MyApp.exe\"" + " -a -u");

1 个答案:

答案 0 :(得分:3)

令您感到困惑的是,您在64位Windows上运行了32位进程,并且您正在写入由registry redirector重定向的注册表的一部分。所以

HKLM\Software

被重定向到

HKLM\Software\Wow6432Node

你会在那里找到你的参赛作品。这没什么好担心的。系统将在启动时从32个视图和64个视图中读取密钥。

请记住,如果您的代码无法写入注册表,那么它将抛出异常。

简而言之,您的代码有效,您只是在注册表编辑器中查找错误的位置。