2014-07-28 03:24:17 +0000 2014-07-28 03:24:17 +0000
50
50
Advertisement

Est-il possible d'exécuter automatiquement un fichier batch en tant qu'administrateur

Advertisement

Je me demande s'il est possible d'ouvrir automatiquement un fichier batch en tant qu'administrateur lorsque vous double-cliquez sur le fichier batch, car les commandes doivent être exécutées avec des droits d'administration.

Note : Je connais déjà la solution consistant à faire un clic droit sur le fichier et à cliquer sur Run As Administrator, mais ce n'est pas une solution automatique.

Advertisement

Réponses (9)

45
45
45
2014-07-28 03:43:30 +0000

Oui, vous êtes en mesure d'exécuter un fichier batch avec des droits administratifs. Malheureusement, vous ne pouvez pas le faire directement à partir du fichier batch lui-même. Vous devez d'abord créer un raccourci de ce fichier batch et modifier les propriétés de ce raccourci pour que cela fonctionne.

Pour créer un raccourci, il y a plusieurs façons mais la plus simple et la plus rapide est d'utiliser l'option Envoyer à dans le menu contextuel.

Right click batch file > Send to > Desktop (create shortcut)

Bien sûr, vous pouvez envoyer le raccourci où vous voulez. Pour élever le fichier batch au rang d'administrateur, suivez les étapes ci-dessous :

  1. Faites un clic droit sur le raccourci que vous venez de créer (il doit se trouver sur le bureau ou à l'endroit où vous l'envoyez)
  2. Sous l'onglet Raccourci, cliquez sur le bouton Avancé…
  3. Cochez la case Run as administrator et appuyez sur OK dans la fenêtre modale et dans la fenêtre principale des propriétés.
  4. Exécutez le raccourci en double-cliquant dessus et le fichier batch devrait s'exécuter en tant qu'administrateur.
33
33
33
2014-12-15 16:55:24 +0000

Tel que posté dans une réponse par Ben Gripka à une autre question :

REM --add the following to the top of your bat file--

@echo off

:: BatchGotAdmin
:-------------------------------------
REM --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
    echo Requesting administrative privileges...
    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    set params = %*:"=""
    echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"
    exit /B

:gotAdmin
    pushd "%CD%"
    CD /D "%~dp0"
:--------------------------------------
5
Advertisement
5
5
2015-02-10 14:25:39 +0000

sur Windows 7

  1. Créez un raccourci vers ce fichier batch

  2. Faites un clic droit sur le fichier de raccourci

  3. Cliquez sur le bouton d'avance pour trouver une case à cocher pour fonctionner en tant qu'administrateur

Cochez la capture d'écran ci-dessous

4
4
4
2014-10-07 18:42:22 +0000

La réponse acceptée fonctionne en effet. Mais j'ai découvert que dans Windows 7, je devais supporter le dialogue UAC à chaque fois que l'on clique sur le raccourci. Cette IMHO détourne considérablement le “automatiquement” de cette question !

Puis j'ai découvert que dans ma propre situation, le fichier .bat en question doit être exécuté par le planificateur de tâches. Dans ce cas, en cochant l'option Run with highest privileges dans l'onglet General de la tâche, le problème est résolu. Le .bat est alors exécuté en tant qu'administrateur sans aucun problème.

PS : Je n'avais pas réalisé que je ne pouvais pas télécharger d'images sur cette réponse, parce que j'ai une belle petite capture d'écran à côté de moi maintenant ! Ou est-ce que je peux ?

3
Advertisement
3
3
2015-05-31 14:49:17 +0000

Vous pouvez utiliser mon script Batch_Admin pour élever automatiquement l'administrateur afin de l'utiliser dans n'importe quel type de script propre à Batch, ou BAT ou .CMD. Cette fonction assure le travail dans un environnement standard, avec des outils standard et de la même manière dans les différents systèmes Windows. Elle utilise plusieurs commandes Windows standard et intégrées. N'utilisez pas d'autres scripts externes. Elle peut être utilisée pour appeler n'importe quel programme en tant qu'administrateur, et pas seulement les scripts BAT. Il suffit de créer un petit script, qui appelle ensuite le programme qui nécessite l'autorisation Administartor. Placez-le 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 script Batch parent, 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-scripts (voir l'explication détaillée ci-dessous).

net session >nul 2>nul&if errorlevel 1 Batch_Admin "%~0" %*

Ceci peut être inséré à l'intérieur de tout script 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" %*

Donc, comment cela fonctionne :

  • Appels UAC. ShellExecute via VBScript pour récupérer les autorisations de l'utilisateur

  • Exécution du script par lots, ou BAT ou CMD

  • L'appelant du script peut avoir un long espace nom inclus dans l'appel entre guillemets

  • Rendre tous les paramètres d'appel du script maître passés depuis la ligne de commande, comme s'il n'y avait pas de transmission de l'appel et commencer quelque chose à partir de zéro, également avec des caractères spéciaux, comme des points d'exclamation ( ! ) et le pourcentage (%), et aussi avec des parenthèses ()

  • Tient un emplacement du script maître si l'appel a eu lieu dans le répertoire où ce script est le maître

  • Auxiliaire affiche un message si nous mettons devant nous 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 paramètres qui doivent être définis : SET ShowAdminInfo=5 Par défaut, comme cette variable n'est pas définie, elle ne s'affiche pas.

  • Le script appelle également dans le chemin de recherche du système % PATH% et à partir de la ressource réseau, comme : \Computer\share\stest.bat

  • Prévient 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 que vous exécutiez le script complètement à nouveau, dans une nouvelle fenêtre, dans un nouvel environnement, sans avoir recours aux variables qui sont définies précédemment dans notre script et dont les valeurs ne sont pas passées ensuite à l'appel en tant qu'Administrateur. Seul le script sera exécuté à nouveau.

Ci-dessous un script complet Batch_Admin. Des informations plus détaillées à ce sujet se trouvent sur mon site.

Copiez le texte suivant dans le Bloc-notes et enregistrez-le sur le disque sous : 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)***
1
1
1
2015-11-26 03:54:44 +0000
@echo off        
:: BatchGotAdmin        
:-------------------------------------        
REM --> Check for permissions  
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"  
REM --> If error flag set, we do not have admin.  
if '%errorlevel%' NEQ '0' ( echo Requesting administrative privileges... goto UACPrompt) else ( goto gotAdmin )  
:UACPrompt  
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"  
    echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"  
    "%temp%\getadmin.vbs"  
    exit /B
:gotAdmin  
chkdsk

Cela fonctionne égalementSOURCE : https://social.technet.microsoft.com/Forums/windows/en-US/bc8a4561-d97e-4339-9b1c-9b90e54a7f92/request-elevation-inside-cmdbatch-file

1
Advertisement
1
1
2014-07-28 14:33:06 +0000

Vous pouvez également créer un deuxième fichier de lot, ce qui vous permet de tout exécuter en tant qu'administrateur, tout en ne saisissant le mot de passe de l'administrateur qu'une seule fois. Le mot de passe est enregistré dans un jeton d'authentification, et nécessite un réel savoir-faire informatique pour le déchiffrer.

runas /savecred /user:(domain)\(admin user) "(file path to exe,bat,whatever)"
0
0
0
2015-11-25 07:07:27 +0000

C'est un exemple pour faire fonctionner la batte en tant qu'administrateur. Ça marche pour moi.

Ça se présente comme suit :

if "%~s0"=="%~s1" ( cd %~sp1 & shift ) else (
  echo CreateObject^("Shell.Application"^).ShellExecute "%~s0","%~0 %*","","runas",1 >"%tmp%%~n0.vbs" & "%tmp%%~n0.vbs" & del /q "%tmp%%~n0.vbs" & goto :eof
)
:eof
start Cmd /k "netsh wlan show profile"
pause </

cls
Color 0A
@echo off
echo.
cls
set/p ProfileName=Type the name of the current Wifi signal? 
echo.
start Cmd /k "netsh wlan show profile name=%ProfileName% key=clear"
pause </
exit
pause
0
Advertisement
0
0
2015-11-11 09:50:46 +0000

Vous pouvez utiliser un utilitaire en ligne de commande elevate . (lien de téléchargement - https://drive.google.com/open?id=0Bz7qe_olclTwVGZLUklFMHNxQ00 )

Usage: Elevate [-?|-wait|-k] prog [args]
-? - Shows this help
-wait - Waits until prog terminates
-k - Starts the the %COMSPEC% environment variable value and
                executes prog in it (CMD.EXE, 4NT.EXE, etc.)
prog - The program to execute
args - Optional command line arguments to prog
Advertisement
Advertisement