【发布时间】:2015-04-20 16:04:23
【问题描述】:
我有
RequestExecutionLevel admin
在我的 NSIS 脚本中。
问题是,如果 Windows UAC 设置为“从不通知”并且普通用户运行安装程序,则安装程序会在不请求权限的情况下尝试继续,并且在尝试修改安装程序时会失败并显示一条晦涩的消息。目录用户没有权限。
我想做的是快速失败并立即显示一个对话框,说“请以管理员身份运行”。
我尝试添加我发现的以下代码片段,但它总是失败,除非用户实际上是管理员(但不是具有管理员执行级别的普通用户)。
UserInfo::GetAccountType
pop $0
${If} $0 != "admin"
MessageBox mb_iconstop "Administrator rights required!"
SetErrorLevel 740 ;ERROR_ELEVATION_REQUIRED
Quit
${EndIf}
【问题讨论】:
-
Windows 版本?您的注册表中 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System 下的 ConsentPromptBehaviorAdmin 和 ConsentPromptBehaviorUser 的值是多少?
-
我知道现在实际发生了什么。即使用户使用右键 -> 以管理员身份运行,由于 UAC 是“从不通知”,它仍然会以普通用户身份运行程序。我的代码很好,但我将更改错误消息以表明这可能是他们的问题。