如何为 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字符"

来源:https://www.autohotkey.com/boards/viewtopic.php?t=39647