【发布时间】:2017-09-04 01:33:59
【问题描述】:
我将它编译为可执行文件,但要打开它,我必须右键单击并按“以管理员身份运行”。我希望它每次运行时都请求管理员权限,但怎么做呢?
我做不到:
因为当我将它复制到第二台计算机时它不起作用。
【问题讨论】:
我将它编译为可执行文件,但要打开它,我必须右键单击并按“以管理员身份运行”。我希望它每次运行时都请求管理员权限,但怎么做呢?
我做不到:
因为当我将它复制到第二台计算机时它不起作用。
【问题讨论】:
尝试将此添加到自动执行部分(脚本顶部):
; If the script is not elevated, relaunch as administrator and kill current instance:
full_command_line := DllCall("GetCommandLine", "str")
if not (A_IsAdmin or RegExMatch(full_command_line, " /restart(?!\S)"))
{
try ; leads to having the script re-launching itself as administrator
{
if A_IsCompiled
Run *RunAs "%A_ScriptFullPath%" /restart
else
Run *RunAs "%A_AhkPath%" /restart "%A_ScriptFullPath%"
}
ExitApp
}
并重新编译脚本。
【讨论】:
这里有一个更简单的代码:
#SingleInstance Force
if not A_IsAdmin
Run *RunAs "%A_ScriptFullPath%"
如果脚本尚未以管理员身份运行,它将以管理员身份运行。
如果您的脚本顶部没有#SingleInstance Force,它会询问您是否要将正在运行的脚本(不是管理员)替换为管理员。因此,为防止这种情况发生,请在脚本顶部添加上述行。
如果您将来可能会编译您的脚本,最好使用这个来代替它以使其面向未来:
#SingleInstance Force
if !A_IsAdmin
Run, % "*RunAs " (A_IsCompiled ? "" : A_AhkPath " ") Chr(34) A_ScriptFullPath Chr(34)
Chr(34) 返回字符 "
【讨论】: