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