Como elevar automaticamente um arquivo em lote para executá-lo como administrador
Às vezes, você precisa criar um arquivo em lote que inclui comandos que exigem direitos elevados. Devido à função UAC incluída no Windows desde o Windows Vista, ao iniciar um arquivo em lote, ele abre sem os direitos de acesso necessários, a menos que você clique com o botão direito e selecione "Executar como Administrador" no contexto cardápio. Aqui está como você pode criar um arquivo em lote que se elevará automaticamente.
Propaganda
Antes de continuar, veja como adicionar o arquivo de lote (* .bat) ao novo menu do Explorador de arquivos. Coloque o seguinte conteúdo no início de seu arquivo em lote:
:: Verificar e obter direitos de administrador V2 automaticamente. @echo off. CLS. ECO. ECHO ECHO Executando o Admin shell. ECHO: init. setlocal DisableDelayedExpansion. definir "batchPath =% ~ 0" para %% k em (% 0) defina batchName = %% ~ nk. definir "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) ECO. ECHO ************************************** ECHO invocando o UAC para escalonamento de privilégios. ECHO ************************************** ECHO Set UAC = CreateObject ^ ("Shell. Aplicativo "^)>"% vbsGetPrivileges% " ECHO args = "ELEV" >> "% vbsGetPrivileges%" ECHO para cada strArg em WScript. Argumentos >> "% vbsGetPrivileges%" ECHO args = args ^ & strArg ^ & "" >> "% vbsGetPrivileges%" ECHO Próximo >> "% 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):: INICIAR. REM Execute o shell como admin (exemplo) - coloque aqui o código como desejar. ECHO% batchName% Argumentos:% 1% 2% 3% 4% 5% 6% 7% 8% 9.
Coloque seus próprios comandos de lote que requerem elevação abaixo da última linha.
O código fornecido criará um arquivo VBS especial que o reiniciará se não estiver sendo executado como Administrador. Portanto, se você iniciá-lo com permissões limitadas, receberá um prompt do UAC solicitando que você eleve os privilégios antes de executar seus comandos!
Esta é a aparência do Windows 10:
Os créditos para este código vão para Matt.