How to add administrator privileges to AutoHotkey script?

限于喜欢 提交于 2019-11-27 06:21:10

问题


I compiled it to an executable, but to open it I have to right-click and press "Run as administrator". I want it to request admin privileges each time I run it, but how to do it?

I can't do this:

Because then it doesn't work when I copy it to a second computer.


回答1:


Try adding this to the auto-execute section (top of the script):

; 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
}

and recompile the script.

For more details read https://autohotkey.com/docs/commands/Run.htm#RunAs.




回答2:


Here's a much simpler code for this purpose:

if not A_IsAdmin
Run *RunAs "%A_ScriptFullPath%"

It will run the script as Admin if it's not already running as Admin.

If you don't have #SingleInstance Force on top of your script, it will ask that if you want to replace the running script (not admin) with admin. So to prevent that, add the mentioned line on top of your script.


Also have a look at this code (it didn't work for me):

if !A_IsAdmin
    Run, % "*RunAs " (A_IsCompiled ? "" : A_AhkPath " ") Chr(34) A_ScriptFullPath Chr(34)

Chr(34) returns character "

Source of this code: https://www.autohotkey.com/boards/viewtopic.php?t=39647



来源:https://stackoverflow.com/questions/43298908/how-to-add-administrator-privileges-to-autohotkey-script

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!