Exécuter un script batch en modifiant le niveau du contrôle de compte d’utilisateur
L’UAC, fait parti de Windows depuis la version de Vista et permet aux applications de modifier le système d'exploitation.
J'ai eu récemment besoin d'utiliser un batch (*.bat ou *.cmd) pour une installation à distance.
Malgré le compte Administrateur, je me suis retrouvé bloqué par un avertissement de l'UAC de Windows demandant l'autorisation à l'application de s’installer sur l'ordinateur. Ne pouvant modifier la configuration de ce dernier de manière permanente, j'ai trouvé ce bout de code qui m'a permis de déclencher la mise à niveau de l'UAC avant de poursuivre les commandes de mon script.
Selon Microsoft : "Le rôle du contrôle de compte d’utilisateur est de vous prévenir avant que des modifications nécessitant une autorisation de niveau Administrateur soient effectuées sur votre ordinateur."
Il faut donc que le compte Administrateur utilisé soit autorisé à exécuter vos instructions que vous allez coller à la fin de ce code.Code installation.bat :
@echo off
:: On exécute les commandes en tant qu'administrateur
::-------------------------------------
REM --> Vérification des permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
REM --> Erreur si vous ne possédez pas les droits Administrateurs
if '%errorlevel%' NEQ '0' (
echo Vérification des privilèges Administrateurs
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
set params = %*:"="
echo UAC.ShellExecute "%~s0", "%params%", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
goto Install
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0" goto Install
::--------------------------------------
:Install
:: COLLER VOS INSTRUCTIONS CI-DESSOUS :
Nous nous basons sur l’exécution d'un script VBS capable d'augmenter le niveau des privilèges de l'UAC.
- On commence par vérifier les droits du compte utilisé.
- Si les droits sont suffisant, on augmente le niveau de privilège permettant la modification du système en créant le script getadmin.vbs.
- Vos instructions sont ensuite exécutés.
Remarques :
- Le batch doit être placé dans un dossier où il a accès en écriture et doté d'une lettre de lecteur.
- Méthodes manuelle pour exécuter en tant qu'Administrateur :
- clic droit puis Exécuter en tant qu’administrateur
- Shift + Clic droit + Exécuter en tant qu'un autre utilisateur. Ensuite vous ajouter les informations, login et mot de passe de l'Administrateur
Cet article peut vous intéresser : Déployer des logiciels en conservant le contrôle de compte d’utilisateur activé sur les postes distants
Remerciements : Wikipédia, stackoverflow.com