带OS的QT自动启动应用程序

时间:2013-05-17 14:21:16

标签: windows qt registry qt4.8

我只在Windows 8中遇到此操作的问题 这是在其他Windwos OS(Win7 / Vista / XP)中使用的代码

#ifdef Q_WS_WIN
QSettings bootUpSettings("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run", QSettings::NativeFormat);

if (runOnbootCheckBox->isChecked())
{
    bootUpSettings.setValue("AppName","\""+base_dir+"\""+ (startMinimizedCheckBox->isChecked() ? " -m" : ""));
}
else
    bootUpSettings.remove("AppName");
#endif

来自regesty的值:“C:\ Program Files(x86)\ Appname \ Appname.exe”-m
任何人都可以解释为什么这段代码不起作用?

2 个答案:

答案 0 :(得分:1)

Wow6432节点将在64位窗口中找到。这用于为64位系统中的应用程序提供32位环境。我假设您的应用程序是32位。因此,当它尝试读取注册表值时,它将被重定向到Wow6432节点。

可能是,您可以在HKCU下添加自定义注册表项,以决定是否在如上所述从Wow6432节点启动后运行应用程序。

这是在这里添加您的启动条目:

HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run

然后,在HKCU中添加自定义条目,以决定是继续运行应用程序还是关闭它。

我的意思是,您可以在应用程序中添加单独的逻辑。

答案 1 :(得分:0)

包含此标题QSettings

#include <QSettings>

并在您的代码中添加此内容。

QSettings settings("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run", QSettings::NativeFormat); settings.setValue("YourApplicationName", QCoreApplication::applicationFilePath().replace('/', '\\'));