QT开机自启

QT

Posted by YiMiTuMi on July 26, 2019

开机自启

在一些特殊场合我们需要自己的软件进行开机自行启动,开机自启原理就是在注册表HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run位置加一个键值,而这个键值就是当前程序的启动路径。

void MainWindow::appAutoRun(bool bAutoRun)
{
    QString application_name = QApplication::applicationName();
    QSettings *settings = new QSettings("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run", QSettings::NativeFormat);
        if(bAutoRun)
        {
            QString application_path = QApplication::applicationFilePath();
            settings->setValue(application_name, application_path.replace("/", "\\"));
        }
        else
        {
            settings->remove(application_name);
        }
    delete settings;
}

因为当前程序是对注册表进行操作,所以需要进行提权。以管理员运行也可以解决问题,但每次以管理员运行相对复杂,所以最好需要提权程序。

夕雾花 – 热烈想念、一往情深