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

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

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

 ::::::::::::::::::::::::  :::::::::::::::::::::: Автоматическая проверка и получение прав администратора V2 :::::::::::::::::::::  :::::::::::::::::::::: @ echo offCLSECHO.ECHO ======================  ======= ECHO Запуск оболочки администратораECHO =============================: initsetlocal DisableDelayedExpansionset "batchPath =% ~ 0"  для %% k в (% 0) установите batchName = %% ~ nkset "vbsGetPrivileges =% temp%  OEgetPriv_% batchName% .vbs" setlocal EnableDelayedExpansion: checkPrivilegesNET FILE 1> NUL 2> NULif '% errorlevel%' == '  0 '(goto gotPrivileges) else (goto getPrivileges): getPrivilegesif'% 1 '==' ELEV '(echo ELEV & shift/1 & goto gotPrivileges) ECHO.ECHO **************  ************************ ECHO Вызов UAC для повышения привилегийECHO *******************  ****************** ECHO Set UAC = CreateObject ^ ("Shell.Application" ^)> "% vbsGetPrivileges%" ECHO args = "ELEV" >> "% vbsGetPrivileges%  "ECHO для каждой strArg в WScript.Arguments >>"% vbsGetPrivileges% "E  CHO args = args ^ & strArg ^ & "" >> "% vbsGetPrivileges%" ECHO Next >> "% vbsGetPrivileges%" ECHO UAC.ShellExecute "! BatchPath!", Args, "", "runas", 1 >> "  % vbsGetPrivileges% ""% SystemRoot%  System32  WScript.exe ""% vbsGetPrivileges% "% * exit/B: gotPrivilegessetlocal & pushd .cd/d% ~ dp0if '% 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:

Кредиты для этого кода переходят к Matt .



Оцените статью
digitdocom.ru
Добавить комментарий