1. 程式人生 > >Qt之開機自啟動及擁有管理員許可權

Qt之開機自啟動及擁有管理員許可權

       在釋出Qt程式的時候,我們通常也需要開機自啟動自己的程式,那麼如何實現呢,主要採用修改登錄檔的方式。

程式碼比較簡單:

#define REG_RUN "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run"

void SettingDialog::setAutoStart(bool is_auto_start)
{
    QString application_name = QApplication::applicationName();
    QSettings *settings = new QSettings(REG_RUN, QSettings::NativeFormat); 
    if(is_auto_start)
    {
        QString application_path = QApplication::applicationFilePath();
        settings->setValue(application_name, application_path.replace("/", "\\"));
    }
    else
    {
        settings->remove(application_name);
    }
    delete settings;
}

檢視登錄檔:(1)執行:regedit(2)找到對應的路徑REG_RUN

       裡面的內容並沒有加進去,當然是因為我們並沒有呼叫自啟動的方法!

       可根據setAutoStart的不同引數來新增或者刪除登錄檔中的項。

呼叫方法後:

 

這樣以來,大部分工作已經做完!

    修改登錄檔的時候,可能會註冊失敗,防毒軟體或者Windows也會進行提示:是否禁用或者允許程式更改。。。好的,怎麼解決呢?

(1)讓程式擁有管理員許可權

(2)設定電腦的UAC級別

         關於(1),何為程式擁有管理員許可權?即程式執行的時候不需要右鍵->以管理員許可權執行就可預設以此許可權執行。在       VS2008以後,配置比較簡單,工程右鍵->屬性->連結器->清單檔案->UAC執行級別

(requireAdministrator)即可。

(3)Creator配置需要在pro中新增:

QMAKE_LFLAGS += /MANIFESTUAC:\"level=\'requireAdministrator\' uiAccess=\'false\'\" #以管理員執行
QMAKE_LFLAGS += /SUBSYSTEM:WINDOWS,\"5.01\" #VS2013 在XP執行
然後以管理員身份執行Creator,重新編譯即可。

    重新生成之後,可執行程式就會發生相應的變化(旁邊多了一個小盾牌)!