Visualizzazione post con etichetta %errorlevel%. Mostra tutti i post
Visualizzazione post con etichetta %errorlevel%. Mostra tutti i post

giovedì 28 luglio 2016

Programmazione Batch: Verificare se lo script è stato eseguito come Amministratore (privilegi elevati)

In alcuni casi può essere utile verificare se lo script batch da noi realizzato è stato eseguito come amministratore (con privilegi elevati). Un modo veloce per effettuare la verifica all'interno dello script è attraverso una particolare variabile d'ambiente: %errorlevel%. Questa variabile contiene un valore relativo all'esito di gran parte dei comandi/programmi: quando un comando viene portato a termine correttamente il valore di %errorlevel% sarà uguale a 0.

Alcuni comandi, come openfiles, NET SESSION, ecc. richiedono privilegi elevati per essere eseguiti e questo li rende adatti al nostro scopo infatti, tentando di eseguire questi comandi normalmente (senza privilegi elevati), verranno terminati con errore e alla variabile %errorlevel% verrà assegnato un valore diverso da 0 (FIG 1).


Variabile d'ambiente %errorlevel%
FIG 1 - Variabile d'ambiente %errorlevel%


Nello script batch che è possibile scaricare dal link DOWNLOAD la verifica viene effettuata proprio con il comando openfiles. L'output del comando viene scartato dirottandolo su NUL (>nul 2>&1) e viene verificata la variabile d'ambiente %errorlevel%: se la variabile ha valore 0 allora il nostro script è stato eseguito con privilegi elevati e possiamo proseguire con le altre istruzioni, in caso contrario lo script termina senza eseguire altre operazioni. Le istruzioni principali del nostro script sono dunque le seguenti:


openfiles>nul 2>&1
if %errorlevel%==0 goto AdminOK