【问题标题】:How to add administrator privileges to AutoHotkey script?如何为 AutoHotkey 脚本添加管理员权限?
【发布时间】:2017-09-04 01:33:59
【问题描述】:

我将它编译为可执行文件,但要打开它,我必须右键单击并按“以管理员身份运行”。我希望它每次运行时都请求管理员权限,但怎么做呢?

我做不到:

因为当我将它复制到第二台计算机时它不起作用。

【问题讨论】:

    标签: autohotkey administrator


    【解决方案1】:

    尝试将此添加到自动执行部分(脚本顶部):

    ; 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

    【讨论】:

      【解决方案2】:

      这里有一个更简单的代码:

      #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) 返回字符 "

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

      【讨论】:

        猜你喜欢
        • 2010-10-26
        • 2021-06-03
        • 1970-01-01
        • 2013-01-20
        • 1970-01-01
        • 2021-05-12
        • 2013-11-05
        • 1970-01-01
        • 2019-09-20
        相关资源
        最近更新 更多