Vous pouvez utiliser mon script Batch_Admin pour élever automatiquement l'Administrateur pour l'utilisation dans n'importe quel type de Batch propre script, ou BAT ou .CMD. Cette fonction assure le travail sur un environnement standard, avec des outils standard et de la même manière dans différents systèmes Windows. Elle utilise plusieurs commandes standard et intégrées de Windows. N'utilisez pas d'autres script externes. Il peut être utilisé pour appeler n'importe quel programme en tant qu'administrateur, pas seulement script Batch. Il suffit de créer un petit script, qui appelle ensuite le programme qui requiert la permission Administartor. Placez ceci dans n'importe quel dossier PATH de recherche (à partir de %PATH%).
Pour l'utiliser, il suffit d'insérer la ligne suivante (exactement comme) dans son lot parent Batch script, qui doit être exécuté en tant qu'Administrateur. Il est préférable de le faire en haut de notre script parent et il est préférable que d'abord, qui sera appelé via le CALL plus loin, quelques sous-script (voir explication détaillée ci-dessous).
net session >nul 2>nul&if errorlevel 1 Batch_Admin "%~0" %*
Il peut être inséré à l'intérieur de n'importe quel scripts enfant, appelé par la syntaxe CALL. Pour afficher un message alors qu'il n'a pas encore les privilèges d'Administrateur, par exemple pendant 5 secondes avant d'appeler Batch_Admin définissez la variable "ShowAdminInfo" sur le nombre de secondes
SET ShowAdminInfo=5
net session >nul 2>nul&if errorlevel 1 Batch_Admin "%~0" %*
Alors comment ça marche :
- Appelle UAC.ShellExecute via VBScript pour récupérer les autorisations de l'utilisateur.
- Exécute en lot le script, ou BAT ou CMD
- L'appelant script peut avoir un long espace de nom inclus dans l'appel entre guillemets.
- Rendre tous les paramètres appeler le maître script passé de la ligne de commande, comme s'il n'y avait pas de transmission de l'appel et commencer quelque chose à partir de zéro, aussi avec des caractères spéciaux, comme les points d'exclamation ( !) et le pourcentage (%), et aussi avec des parenthèses ().
- Détient un emplacement maître script si l'appel a eu lieu dans le répertoire où ce script est le maître.
- L'auxiliaire affiche un message si l'on définit devant soi la variable "ShowAdminInfo", par exemple pendant 5 secondes ce qui peut empêcher le passage immédiat des droits de l'Administrateur donnant des informations supplémentaires et la possibilité d'une décision éclairée. Exemples de réglages à effectuer : SET ShowAdminInfo=5 Par défaut, comme cette variable n'est pas définie, elle ne s'affiche pas.
- Le script s'appelle aussi dans le chemin de recherche du système % PATH% et à partir de la ressource réseau, comme : \Computer\share\test.bat
- Evite les malentendus dans l'écriture des fichiers auxiliaires nécessaires lorsque le script appelle plusieurs Batch_Admin presque en même temps. Il utilise le nombre aléatoire de 1 à 100
- Mais, le mieux est de l'utiliser sur le script parent. Le passage aux droits d'Administrateur nécessite toujours de relancer complètement le script, dans une nouvelle fenêtre, dans un nouvel environnement, sans avoir recours aux les variables sont définies précédemment dans notre script et les valeurs de ces variables ne passaient pas alors pour appeler en tant qu'Administrateur. Juste le script sera exécuté à nouveau.
Ci-dessous un script complet de Batch_Admin. Des informations plus complètes à ce sujet se trouvent sur mon site.
Copiez le texte suivant dans le Bloc-notes et enregistrez-le sur le disque sous le nom de : Batch_Admin.bat
@echo off
if "%~1"=="" (echo *** Batch_Admin ***&echo.&echo Automatically get admin rights for another Batch. See info inside.&TIMEOUT /T 30>nul&goto:eof)
:: A D M I N I S T R A T O R - Automatically get admin rights for script batch. Paste this on top: net session >nul 2>nul&if errorlevel 1 Batch_Admin "%~0" %*
:: Also keep Batch directory localisation and then set variable: PATH_BAT
:: if earlier variable "ShowAdminInfo" is empty (not defined) then no info, else showing info with number of seconds
::
:: Elaboration: Artur Zgadzaj
setlocal
setlocal DisableDelayedExpansion
SET "Localy="
if exist "%~1" SET "Localy=YES"
if exist "%~1.BAT" SET "Localy=YES"
if exist "%~1.CMD" SET "Localy=YES"
if defined Localy FOR %%I IN ("%~1") DO SET "PATH_BAT=%%~dI%%~pI"
SET P1=%~1
SET Parameters=%*
SET Parameters=%Parameters:!=^^!%
setlocal EnableDelayedExpansion
SET Parameters=!Parameters:%P1%=!
SET Parameters=!Parameters:%%=%%%%!
setlocal DisableDelayedExpansion
SET Parameters=%Parameters:~3%
net session >nul 2>nul&if not errorlevel 1 goto Administrator_OK
if not defined ShowAdminInfo goto skip_message_Administrator
echo.
echo Script: %~1
echo.
echo *****************************************************************
echo *** R U N N I N G A S A D M I N I S T R A T O R ***
echo *****************************************************************
echo.
echo Call up just as the Administrator. You can make a shortcut to the script and set:
echo.
echo shortcut ^> Advanced ^> Running as Administrator
echo.
echo Alternatively run once "As Administrator"
echo or in the Schedule tasks with highest privileges
echo.
echo Cancel Ctrl-C or wait for launch %ShowAdminInfo% seconds ...
TIMEOUT /T %ShowAdminInfo% > nul
:skip_message_Administrator
MD %TEMP% 2> nul
SET /A $Admin$=%RANDOM% * 100 / 32768 + 1
SET "Percent="
del "%TEMP%\$Admin_%$Admin$%_Test.bat" 2>nul
echo %Parameters% > "%TEMP%\$Admin_%$Admin$%_Test.bat"
if not exist "%TEMP%\$Admin_%$Admin$%_Test.bat" SET Percent=^"
del "%TEMP%\$Admin_%$Admin$%_Test.bat" 2>nul
echo @SET "PATH_BAT=%PATH_BAT%" > "%TEMP%\$Admin_%$Admin$%_Batch_Start.bat"
echo @SET "BatchFullName=%BatchFullName%" >> "%TEMP%\$Admin_%$Admin$%_Batch_Start.bat"
if defined Localy (echo @CD /D "%PATH_BAT%" >> "%TEMP%\$Admin_%$Admin$%_Batch_Start.bat")
echo @"%~1" %Parameters% %Percent% >> "%TEMP%\$Admin_%$Admin$%_Batch_Start.bat"
echo SET UAC = CreateObject^("Shell.Application"^) > "%TEMP%\$Admin_%$Admin$%_Batch_getPrivileges.vbs"
echo UAC.ShellExecute "%TEMP%\$Admin_%$Admin$%_Batch_Start.bat", "", "", "runas", 1 >> "%TEMP%\$Admin_%$Admin$%_Batch_getPrivileges.vbs"
"%TEMP%\$Admin_%$Admin$%_Batch_getPrivileges.vbs"
endlocal
exit /B
:Administrator_OK
"%~1" %Parameters%
goto:eof
REM *** A D M I N I S T R A T O R - Automatically get admin rights (The End) ***