169 votes

Comment coder un fichier BAT pour qu'il soit toujours exécuté en mode administrateur ?

J'ai cette ligne dans mon fichier BAT :

"Example1Server.exe"

Je voudrais l'exécuter en mode administrateur. Comment modifier le code bat pour l'exécuter en tant qu'administrateur ?

Est-ce correct ? Dois-je mettre les guillemets ?

runas /user:Administrator invis.vbs Example1Server.exe

1 votes

1 votes

387voto

EdmundG Points 1115

L'autre réponse exige que vous entriez le mot de passe du compte Administrateur. De plus, fonctionner sous un compte du groupe Administrateur n'est pas la même chose que exécuter en tant qu'administrateur voir : UAC sur Wikipedia

Instructions pour Windows 7

Afin de s'exécuter en tant qu'administrateur, créez un raccourci pour le fichier batch.

  1. Faites un clic droit sur le fichier batch et cliquez sur copier
  2. Naviguez jusqu'à l'endroit où vous souhaitez créer le raccourci
  3. Cliquez avec le bouton droit de la souris sur l'arrière-plan du répertoire
  4. Sélectionner le raccourci de collage

Vous pouvez ensuite configurer le raccourci pour qu'il soit exécuté en tant qu'administrateur :

  1. Cliquez à droite sur le raccourci
  2. Choisir les propriétés
  3. Dans l'onglet Raccourci, cliquez sur Avancé
  4. Cochez la case "Exécuter en tant qu'administrateur".
  5. Cliquez sur OK, OK

Maintenant, lorsque vous double-cliquez sur le raccourci, il vous demandera une confirmation UAC et ensuite Exécuter en tant qu'administrateur (ce qui, comme je l'ai dit plus haut, est différent de l'exécution sous un compte du groupe des administrateurs).

Regardez la capture d'écran ci-dessous

Screenshot

Nota: Si vous choisissez d'exécuter en tant qu'administrateur, le répertoire courant (chemin) ne sera pas le même que celui du fichier bat. Cela peut causer des problèmes dans de nombreux cas où le fichier bat fait référence à des fichiers relatifs à côté de lui. Par exemple, dans mon Windows 7, le répertoire courant sera SYSTEM32 au lieu de l'emplacement du fichier bat ! Pour le contourner vous devez utiliser

cd "%~dp0"

ou mieux

pushd "%~dp0"

pour s'assurer que cur dir est au même chemin que le fichier bat.

11 votes

Ah, c'était effectivement caché (la plupart d'entre nous ne pensaient pas que ce bouton avancé comportait cette option). Je suis presque sûr que celui qui a pensé à l'autre réponse complexe ne le savait pas. C'est la réponse que 90%+ des visiteurs voudront.

1 votes

Je suis d'accord. Cela devrait être la réponse. J'ai également ajouté une capture d'écran pour faciliter la recherche de l'information. avance bouton

1 votes

Cela s'applique également à Windows Server 2012 R2.

80voto

Kerrek SB Points 194696

Vous utilisez runas pour lancer un programme en tant qu'utilisateur spécifique :

runas /user:Administrator Example1Server.exe

7 votes

@karikari : Un nom comme celui-ci ( Example1Server.exe ) n'a pas besoin d'être mis entre guillemets, mais dans certains autres cas (comme les espaces dans le nom : Example1 Server.exe ) vous en auriez besoin en effet. Vous puede utiliser les guillemets même s'ils ne sont pas nécessaires, cependant.

20 votes

Le compte administrateur peut ne pas être nommé Administrator

10 votes

Anders : Non, ça pourrait ne pas être le cas ; je suppose que le PO peut "repérer le modèle". Ce n'était pas une réponse de type plz-give-me-teh-codez :-S Au fait, je devrais ajouter que le PO pourrait vouloir une commande plus élaborée telle que runas /User:abc "csript myscript.vbs" o runas /User:abc "cmd /c start ..." .

72voto

Sire Points 1507

Ajoutez simplement ceci au début de votre fichier bat :

set "params=%*"
cd /d "%~dp0" && ( if exist "%temp%\getadmin.vbs" del "%temp%\getadmin.vbs" ) && fsutil dirty query %systemdrive% 1>nul 2>nul || (  echo Set UAC = CreateObject^("Shell.Application"^) : UAC.ShellExecute "cmd.exe", "/k cd ""%~sdp0"" && %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs" && "%temp%\getadmin.vbs" && exit /B )

Il s'élèvera au rang d'administrateur et restera également dans le bon répertoire. Testé sur Windows 10.

12voto

aphoria Points 8128

Si vous pouvez utiliser un utilitaire tiers, voici un elevate utilitaire de ligne de commande .

Les sources et les binaires sont disponibles sur GitHub .

Il s'agit de la description de l'utilisation :

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

1 votes

elevate.exe des rochers !

8voto

Dheeraj Bhaskar Points 5244

Vous pouvez utiliser nircmd.exe 's élever commande

Référence des commandes NirCmd - elevate

elevate [Program] {Command-Line Parameters}

Pour Windows Vista/7/2008 uniquement : Exécutez un programme avec des droits d'administrateur. Lorsque le [Programme] contient un ou plusieurs caractères d'espacement, vous devez le mettre entre guillemets.

Exemples :

elevate notepad.exe 
elevate notepad.exe C:\Windows\System32\Drivers\etc\HOSTS 
elevate "c:\program files\my software\abc.exe"

PS : je l'utilise sur win 10 et il fonctionne

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X