爲了確保安裝程序以管理員身份運行通常我建議這個小例子:
Outfile RequireAdmin.exe
RequestExecutionLevel admin ;Require admin rights on NT6+ (When UAC is turned on)
!include LogicLib.nsh
Function .onInit
UserInfo::GetAccountType
pop $0
${If} $0 != "admin" ;Require admin rights on NT4+
MessageBox mb_iconstop "Administrator rights required!"
SetErrorLevel 740 ;ERROR_ELEVATION_REQUIRED
Quit
${EndIf}
FunctionEnd
Page InstFile
Section
SectionEnd
安裝的應用程序應該執行類似的步驟,如果它總是需要以管理員身份運行,對於一個Win32應用程序,這將是:
如果通過「自動以管理員身份運行」,您的意思是繞過UAC標高,那麼不是真的不可能,UAC的整點是允許用戶確認/拒絕特權操作!一些應用程序通過安裝一個NT服務來解決這個問題,該服務代表應用程序執行他們需要的任何操作。我不會推薦這樣做,因爲它將服務填充到用戶機器中,並且如果服務編碼不正確,可能會削弱系統的安全性。
如果您沒有編寫您正在安裝的應用程序,那麼您的選項會受到一些限制。如果應用程序根本沒有清單,則可以使用清單。
在AppCompatFlags鍵下設置RUNASADMIN字符串並不是安裝程序應該做的事情,這些兼容性選項應該由用戶控制,而不是應用程序。
您鏈接到也告訴你twoways設置SLDF_RUNAS_USER
標誌上的快捷方式的論壇主題,這不會確保應用程序在所有情況下,開始作爲管理員,只有當應用程序從快捷方式啓動,但它可能是你唯一的選擇,如果你不能改變應用程序本身...
感謝您的時間。真的很好的回答... – MoonKnight 2012-01-17 10:07:59
事實上是光輝的! – MoonKnight 2012-01-17 10:09:18