如何为 AutoHotkey 脚本添加管理员权限?
How to add administrator privileges to AutoHotkey script?
我将其编译为可执行文件,但要打开它我必须右键单击并按 "Run as administrator"。我希望它每次都请求管理员权限 运行,但是该怎么做?
我做不到:
因为当我将它复制到第二台计算机时它不起作用。
尝试将其添加到自动执行部分(脚本顶部):
; 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
}
并重新编译脚本。
有关详细信息,请阅读 https://autohotkey.com/docs/commands/Run.htm#RunAs。
这里有一个用于此目的的更简单的代码:
#SingleInstance Force
if not A_IsAdmin
Run *RunAs "%A_ScriptFullPath%"
它将运行脚本作为管理员,如果它还没有运行宁作为管理员。
如果您的脚本顶部没有 #SingleInstance Force
,它会询问您是否要将 运行ning 脚本(不是 admin)替换为 admin。因此,为防止这种情况,请在脚本顶部添加提到的行。
如果您将来可能会编译您的脚本,最好改用这个脚本以使其面向未来:
#SingleInstance Force
if !A_IsAdmin
Run, % "*RunAs " (A_IsCompiled ? "" : A_AhkPath " ") Chr(34) A_ScriptFullPath Chr(34)
Chr(34)
returns字符"
我将其编译为可执行文件,但要打开它我必须右键单击并按 "Run as administrator"。我希望它每次都请求管理员权限 运行,但是该怎么做?
我做不到:
因为当我将它复制到第二台计算机时它不起作用。
尝试将其添加到自动执行部分(脚本顶部):
; 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
}
并重新编译脚本。
有关详细信息,请阅读 https://autohotkey.com/docs/commands/Run.htm#RunAs。
这里有一个用于此目的的更简单的代码:
#SingleInstance Force
if not A_IsAdmin
Run *RunAs "%A_ScriptFullPath%"
它将运行脚本作为管理员,如果它还没有运行宁作为管理员。
如果您的脚本顶部没有 #SingleInstance Force
,它会询问您是否要将 运行ning 脚本(不是 admin)替换为 admin。因此,为防止这种情况,请在脚本顶部添加提到的行。
如果您将来可能会编译您的脚本,最好改用这个脚本以使其面向未来:
#SingleInstance Force
if !A_IsAdmin
Run, % "*RunAs " (A_IsCompiled ? "" : A_AhkPath " ") Chr(34) A_ScriptFullPath Chr(34)
Chr(34)
returns字符"