146 votes

Comment ouvrir une cmd élevée en utilisant la ligne de commande pour Windows ?

Comment ouvrir une invite de commandes élevée en utilisant des lignes de commandes sur une commande cmd normale ?

Par exemple, j'utilise runas /username:admin cmd mais la commande cmd ouverte ne semble pas être élevée ! Des solutions ?

10voto

statler Points 447

Le script suivant en tant que fichier batch ouvrira une invite de commande élevée avec le chemin défini sur le même répertoire que celui à partir duquel le fichier batch a été invoqué

set OLDDIR=%CD%
powershell -Command "Start-Process cmd -ArgumentList '/K cd %OLDDIR%' -Verb RunAs "

7voto

Ogmios Points 558

Alors que les deux solutions fournies par Dheeraj Bhaskar fonctionnent, malheureusement elles entraîneront l'affichage (selon l'ordre z) de la boîte de dialogue UAC, mais sans qu'elle soit mise au premier plan (la fenêtre au premier plan étant celle de la console cmd/powershell), donc je dois soit prendre la souris et cliquer sur "oui", soit sélectionner la fenêtre UAC en utilisant Alt+Shift+Tab. (Testé sur Win10x64 v1607 build14393.447 ; UAC = "[...] ne pas atténuer [...]".)

La solution suivante est un peu maladroite car elle utilise deux fichiers, mais elle préserve l'ordre de focus correct, donc aucune action supplémentaire de souris/clavier n'est requise (à part la confirmation de la boîte de dialogue UAC : Alt+Y).

  1. cmdadm.lnk (propriétés de raccourci / avancé... / Exécuter en tant qu'administrateur = ON) %SystemRoot%\System32\cmd.exe /k "cd /d"
  2. su.bat @start cmdadm.lnk %cd%

Exécuter avec su.

7voto

Stefan Gadecki Points 71

Faites en sorte que le fichier de commandes enregistre les informations d'identification du compte administrateur actuel en utilisant l'option /savecred. Cela demandera les informations d'identification la première fois, puis stockera le mot de passe chiffré dans le gestionnaire d'informations d'identification. Ensuite, à chaque exécution ultérieure du fichier de commandes, il s'exécutera en tant qu'administrateur complet sans demander d'informations d'identification car elles sont stockées de manière chiffrée dans le gestionnaire d'informations d'identification et l'utilisateur final ne pourra pas obtenir le mot de passe. Le code suivant devrait ouvrir une CMD élevée avec des privilèges d'administrateur complets et ne demandera le mot de passe que la première fois :

START c:\Windows\System32\runas.exe /user:Administrator /savecred cmd.exe

6voto

David Rodriguez Points 1785

Ma façon préférée de faire cela est d'utiliser PsExec.exe de SysInternals, disponible sur http://technet.microsoft.com/en-us/sysinternals/bb897553

.\psexec.exe -accepteula -h -u "$username" -p "$password" cmd.exe

L'option "-h" est celle qui fait la magie:

-h Si le système cible est Vista ou supérieur, exécute le processus avec le jeton élevé du compte, s'il est disponible.

4voto

seangwright Points 9294

J'utilise Elevate depuis un certain temps maintenant.

Sa description - Cet utilitaire exécute une commande avec élévation des privilèges UAC. C'est utile pour travailler dans des invites de commandes ou avec des fichiers batch.

Je copie le bin.x86-64\elevate.exe du .zip dans C:\Program Files\elevate et j'ajoute ce chemin à mon PATH.

Ensuite, dans GitBash, je peux exécuter quelque chose comme elevate sc stop W3SVC pour arrêter le service IIS.

L'exécution de la commande me donne la boîte de dialogue UAC, correctement concentrée avec le contrôle du clavier et en acceptant la boîte de dialogue je reviens à mon shell.

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