我有一個InnoSetup安裝程序,通常可以以非管理員身份運行,但在某些情況下,如果滿足條件,需要使用提升的特權運行。所以我設置PrivilegesRequired
以lowest
,以確保它不會顯示UAC提示不需要時,如果條件滿足,我試圖重新啓動它爲管理員這樣的:基於運行時條件以管理員身份運行安裝程序
if not ShellExec('runas', ExpandConstant('{srcexe}'), GetCmdTail(), '', SW_HIDE, ewNoWait, errorCode) then begin
MsgBox(SysErrorMessage(errorCode), mbError, MB_OK);
end;
但總是失敗,錯誤5:訪問被拒絕。
顯然這不是因爲我不能使用runas
動詞:用該動詞運行另一個可執行文件可以正常工作,並顯示UAC提示。我也嘗試將setup.exe複製到臨時目錄並從那裏運行,但複製失敗。
如何以管理員身份重新啓動設置?
[Make InnoSetup安裝程序請求特權提升只在需要時纔可能重複](http://stackoverflow.com/questions/21556853/make-innosetup-installer-request-privileges-elevation-only-when-needed) –