Comment élever automatiquement un fichier batch pour l'exécuter en tant qu'administrateur?

2018-08-18 05:27:54
Principal·Microsoft·Comment élever automatiquement un fichier batch pour l'exécuter en tant qu'administrateur?

Pour élever manuellement les fichiers de commandes, vous devez cliquer dessus avec le bouton droit et choisir Exécuter en tant qu'administrateur. Voici un moyen d'élever automatiquement un fichier de commandes nécessitant des privilèges élevés pour fonctionner correctement. Cela revient à choisir «Exécuter en tant qu'administrateur» en cliquant avec le bouton droit sur un fichier de commandes. Dans les deux cas, l'invite UAC s'affichera toujours.

Élever automatiquement un fichier de commandes

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

Ajoutez vos instructions à ce fichier .bat sous l'étiquette «START».

Ce fichier de commandes crée un fichier Vbscript qui relance ensuite le fichier de commandes en tant qu'administrateur (s'il n'est pas déjà exécuté avec des privilèges d'administrateur) en utilisant le paramètre «runas» qui est nécessaire pour l'éléver. La méthode Vbscript & «runas» a été couverte dans mon ancien post Vbscripts et élévation UAC dans Windows Vista et supérieur.

Crédits à Matt à Stack Overflow pour cette méthode. Windows - Comment puis-je élever automatiquement mon fichier de commandes pour qu'il demande des droits d'administrateur UAC si nécessaire?

Exécution de fichiers de commandes élevés par défaut

Outre la méthode d'élévation automatique ci-dessus, du côté du client, vous pouvez modifier le registre afin que les fichiers de commandes démarrent toujours en hauteur, en affichant l'invite UAC. Cela se fait en changeant l'action de double-clic par défaut de "open" en "runas" dans le registre. Suivez ces étapes:

Démarrez Regedit.exe et accédez à l'emplacement suivant:

 HKEY_CLASSES_ROOT \ batfile \ shell 

Double-cliquez (par défaut) et définissez ses données de valeur comme runas

Quittez l'Éditeur du Registre.

Après cette modification, les fichiers de commandes s'exécutent toujours avec un niveau élevé lorsque vous double-cliquez dessus. Exécuter en tant qu'administrateur serait l'option par défaut affichée lorsque vous cliquez avec le bouton droit sur un fichier .bat.

Choix De L'Éditeur