我有
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 :(得分:1)
没有具有管理员执行级别的普通用户。当非管理员想要提升时,他们必须使用管理员的凭据,并且新进程作为此管理员而不是用户运行。这称为Over The Shoulder海拔......
使用UserInfo :: GetAccountType是正确的解决方案。