我有一个InnoSetup安装程序,通常可以以非管理员身份运行,但在某些情况下,如果满足条件,需要使用提升的特权运行。所以我设置PrivilegesRequired
以lowest
,以确保它不会显示UAC提示不需要时,如果条件满足,我试图重新启动它为管理员这样的:基于运行时条件以管理员身份运行安装程序
if not ShellExec('runas', ExpandConstant('{srcexe}'), GetCmdTail(), '', SW_HIDE, ewNoWait, errorCode) then begin
MsgBox(SysErrorMessage(errorCode), mbError, MB_OK);
end;
但总是失败,错误5:访问被拒绝。
显然这不是因为我不能使用runas
动词:用该动词运行另一个可执行文件可以正常工作,并显示UAC提示。我也尝试将setup.exe复制到临时目录并从那里运行,但复制失败。
如何以管理员身份重新启动设置?
[Make InnoSetup安装程序请求特权提升只在需要时才可能重复](http://stackoverflow.com/questions/21556853/make-innosetup-installer-request-privileges-elevation-only-when-needed) –