为了确保安装程序以管理员身份运行通常我建议这个小例子:
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