2015-04-20 40 views
1

NSIS安裝程序:檢測是否RequestExecutionLevel沒有工作

RequestExecutionLevel admin 

在我NSIS腳本。

問題是,如果將Windows UAC設置爲「從不通知」並且普通用戶運行安裝程序,則安裝程序會嘗試繼續進行操作,而不會詢問權限,並在嘗試修改時中途顯示一條模糊的消息目錄用戶沒有權限。

我想要做的就是快速失敗並立即顯示一個對話框,說「請以管理員身份運行」。

我已經嘗試添加以下snippit我發現,但它總是失敗,除非用戶實際上是一個管理員(但不具有管理員執行級別的普通用戶)。

UserInfo::GetAccountType pop $0 ${If} $0 != "admin" MessageBox mb_iconstop "Administrator rights required!" SetErrorLevel 740 ;ERROR_ELEVATION_REQUIRED Quit ${EndIf}

+0

Windows版本?您的註冊表中的ConsentPromptBehaviorAdmin和ConsentPromptBehaviorUser在HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ System中的價值是什麼? – Anders

+0

我明白現在發生了什麼。即使用戶使用右鍵單擊 - >以管理員身份運行,由於UAC是「從不通知」,它仍然會像普通用戶一樣運行該程序。我有的代碼很好,但我要更改錯誤消息以表明這可能是他們的問題。 – Will

回答

1

有沒有這樣的事情作爲具有管理員執行級別普通用戶。當非管理員想要提升時,他們必須使用管理員的憑據,並且新流程以此管理員身份運行,而不是用戶。這稱爲Over The Shoulder海拔...

使用UserInfo :: GetAccountType是正確的解決方案。

相關問題