Come elevare automaticamente un file batch per eseguirlo come amministratore?

Per elevare manualmente i file batch, fare clic con il tasto destro su di esso e scegliere Esegui come amministratore. Ecco un modo per elevare automaticamente un file batch che richiede privilegi elevati per funzionare correttamente. Ciò equivale a scegliere "Esegui come amministratore" facendo clic con il pulsante destro del mouse su un file batch. In entrambi i casi, il prompt UAC verrebbe comunque visualizzato.

Elevazione automatica di un file batch

:::::::::::::::::::::::::::::::::::::::::::: :: 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 

Aggiungi le tue istruzioni a questo file .bat sotto l'etichetta "START".

$config[ads_text6] not found

Questo file batch crea un file Vbscript che quindi riavvia il file batch come amministratore (se non è già in esecuzione con i privilegi di amministratore) utilizzando il parametro "runas" necessario per elevarlo. Il metodo Vbscript & "runas" è stato trattato nel mio vecchio post Vbscripts e elevazione UAC in Windows Vista e versioni successive.

Riconoscimenti a Matt allo Stack Overflow per questo metodo. windows - Come posso elevare automaticamente il mio file batch, in modo che possa richiedere i diritti di amministratore UAC se necessario?

Esecuzione di file batch elevata per impostazione predefinita

Oltre al precedente metodo di elevazione automatica, dal lato client è possibile modificare il registro in modo che i file batch vengano sempre elevati, mostrando il prompt UAC. Questo viene fatto modificando l'azione di doppio clic predefinita da "open" a "runas" nel registro. Utilizzare questi passaggi:

Avviare Regedit.exe e andare al seguente percorso:

 batfile \ shell HKEY_CLASSES_ROOT \ 

Fare doppio clic (impostazione predefinita) e impostare i dati del suo valore come runas

Chiudi l'editor del registro.

Dopo questa modifica, i file batch verranno sempre elevati quando si fa doppio clic. Esegui come amministratore sarebbe l'opzione predefinita visualizzata quando si fa clic con il pulsante destro del mouse su un file .bat.

Articoli Correlati