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

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

Автоматическое повышение уровня командного файла

::::::::::::::::::::::::::::::::::::::::::::
:: Automatically check & get admin rights V2
::::::::::::::::::::::::::::::::::::::::::::
@echo off
CLS
ECHO.
ECHO =============================
ECHO Running Admin shell
ECHO =============================
:init
setlocal DisableDelayedExpansion
set "batchPath=%~0"
for %%k in (%0) do set batchName=%%~nk
set "vbsGetPrivileges=%temp%\OEgetPriv_%batchName%.vbs"
setlocal EnableDelayedExpansion
:checkPrivileges
NET FILE 1>NUL 2>NUL
if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )
:getPrivileges
if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges)
ECHO.
ECHO **************************************
ECHO Invoking UAC for Privilege Escalation
ECHO **************************************
ECHO Set UAC = CreateObject^("Shell.Application"^) > "%vbsGetPrivileges%"
ECHO args = "ELEV " >> "%vbsGetPrivileges%"
ECHO For Each strArg in WScript.Arguments >> "%vbsGetPrivileges%"
ECHO args = args ^& strArg ^& " "  >> "%vbsGetPrivileges%"
ECHO Next >> "%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 Run shell as admin (example) - put here code as you like
ECHO %batchName% Arguments: %1 %2 %3 %4 %5 %6 %7 %8 %9
cmd /k

Добавьте ваши инструкции в этот файл .bat под меткой «START».

Этот пакетный файл создает файл Vbscript, который затем повторно запускает пакетный файл как администратор (если он еще не работает с правами администратора), используя параметр «runas», который необходим для его повышения. Vbscript Метод «runas» был описан в моих старых постах Vbscript и UAC в Windows Vista и выше.

Кредиты Мэтту в переполнении стека для этого метода. Windows — Как я могу автоматически поднять мой пакетный файл, чтобы он запрашивал у администратора UAC права, если это необходимо?

Запуск пакетных файлов с повышением по умолчанию

Помимо описанного выше автоматического метода повышения прав, со стороны клиента вы можете настроить реестр, чтобы пакетные файлы всегда начинались с повышенных прав, отображая приглашение UAC. Это делается путем изменения действия двойного щелчка по умолчанию с «открыть» на «runas» в реестре. Используйте эти шаги:

Запустите Regedit.exe и перейдите в следующую папку:

HKEY_CLASSES_ROOT\batfile\shell

Дважды щелкните (по умолчанию) и установите его значение данных как беги как

bat-файл по умолчанию runas повышен

Выйдите из редактора реестра.

После этого изменения пакетные файлы всегда запускаются с повышенными правами при двойном щелчке. Запуск от имени администратора будет параметром по умолчанию, отображаемым при щелчке правой кнопкой мыши на файле .bat.

bat-файл по умолчанию runas повышен

Ссылка на основную публикацию