Как добавить права администратора в скрипт AutoHotkey?

Я скомпилировал его в исполняемый файл, но чтобы открыть его, мне нужно щелкнуть правой кнопкой мыши и нажать «Запуск от имени администратора». Я хочу, чтобы при каждом запуске он запрашивал права администратора, но как это сделать?

Я не могу сделать это:

Потому что тогда он не работает, когда я копирую его на второй компьютер.


person barteczek56    schedule 08.04.2017    source источник


Ответы (2)


Попробуйте добавить это в раздел автоматического выполнения (вверху скрипта):

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

person user3419297    schedule 08.04.2017

Вот гораздо более простой код для этой цели:

if not A_IsAdmin
Run *RunAs "%A_ScriptFullPath%"

Он запустит скрипт от имени администратора, если он еще не запущен от имени администратора.

Если у вас нет #SingleInstance Force поверх вашего скрипта, он спросит, хотите ли вы заменить работающий скрипт (не admin) на admin. Поэтому, чтобы предотвратить это, добавьте указанную строку поверх вашего скрипта.


Также взгляните на этот код (у меня он не работал):

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

person Shayan    schedule 09.12.2018