Как автоматически повысить пакетный файл, чтобы запустить его от имени администратора

Иногда вам нужно создать командный файл, который включает команды, требующие повышенных прав. Благодаря функции UAC, включенной в Windows, начиная с Windows Vista, при запуске командного файла он открывается без необходимых прав доступа, если вы не щелкните его правой кнопкой мыши и не выберите «Запуск от имени администратора» в контекстном меню. Вот как вы можете создать командный файл, который будет автоматически повышаться.

Прежде чем продолжить, узнайте, как добавить пакетный файл (* .bat) в меню «Новое» проводника. Поместите следующий контент в начало вашего командного файла:

:::::::::::::::::::::::::::::::::::::::::::: :: Автоматическая проверка и получение прав администратора V2 :::::::::::::::::::::::::::::::::::::::::::: @ эхо выключено CLS ЭХО. ЭХО ============================= ECHO Запуск оболочки администратора ЭХО =============================
:в этом setlocal DisableDelayedExpansion установить "batchPath =% ~ 0" для %% k в (% 0) установите batchName = %% ~ nk установить "vbsGetPrivileges =% temp% \ OEgetPriv_% batchName% .vbs" setlocal EnableDelayedExpansion
: checkPrivileges ЧИСТЫЙ ФАЙЛ 1> NUL 2> NUL если '% errorlevel%' == '0' (goto gotPrivileges) else (goto getPrivileges)
: getPrivileges если '% 1' == 'ELEV' (echo ELEV & shift / 1 & goto gotPrivileges) ЭХО. ЭХО ************************************** ECHO вызывает UAC для повышения привилегий ЭХО **************************************
ECHO Set UAC = CreateObject ^ ("Shell.Application" ^)> "% vbsGetPrivileges%" ECHO args = "ELEV" >> "% vbsGetPrivileges%" ECHO для каждой strArg в WScript.Arguments >> "% vbsGetPrivileges%" ECHO args = args ^ & strArg ^ & "" >> "% vbsGetPrivileges%" ECHO Далее >> "% vbsGetPrivileges%" ECHO UAC.ShellExecute "! BatchPath!", Args, "", "runas", 1 >> "% vbsGetPrivileges%" "% SystemRoot% \ System32 \ WScript.exe" "% vbsGetPrivileges%"% * выход / B
: gotPrivileges setlocal и pushd. cd / d% ~ dp0 если '% 1' == 'ELEV' (del "% vbsGetPrivileges%" 1> nul 2> nul & shift / 1)
:::::::::::::::::::::::::::: ::НАЧНИТЕ :::::::::::::::::::::::::::: REM Запустить оболочку от имени администратора (пример) - введите здесь код, как вам нравится ECHO% batchName% Аргументы:% 1% 2% 3% 4% 5% 6% 7% 8% 9 

Разместите свои собственные пакетные команды, которые требуют повышения ниже последней строки.

Предоставленный код создаст специальный файл VBS, который перезапустит его, если он не запущен от имени администратора. Итак, если вы запустите его с ограниченными разрешениями, вы получите приглашение UAC с просьбой повысить привилегии, прежде чем он выполнит свои команды!

Вот как это выглядит в Windows 10:Пакетный файл Windows 10

Запрос UAC пакетного файла Windows 10

Windows 10 автоматически повышает пакетный файлКредиты для этого кода переходят на Мэтт.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *