NSIS安装程序:检测RequestExecutionLevel是否不起作用

时间:2015-04-20 16:04:24

标签: windows nsis uac

我有

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}

1 个答案:

答案 0 :(得分:1)

没有具有管理员执行级别的普通用户。当非管理员想要提升时,他们必须使用管理员的凭据,并且新进程作为此管理员而不是用户运行。这称为Over The Shoulder海拔......

使用UserInfo :: GetAccountType是正确的解决方案。