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 ?

4voto

La méthode de Dheeraj Bhaskar avec Powershell a un espace manquant, du moins pour l'incarnation de Powershell sous Windows 10.

La ligne de commande à l'intérieur de son sudo.bat devrait être

powershell.exe -Command "Start-Process cmd \"/k cd /d %cd% \" -Verb RunAs"

Remarquez l'espace supplémentaire après %cd%

;) Frode

3voto

Shadow Lynx Points 31

Tout comme certaines des autres solutions ci-dessus, j'ai créé un fichier batch elevate qui lance une fenêtre PowerShell avec élévation des privilèges, contournant la stratégie d'exécution pour permettre l'exécution de tout, des commandes simples aux fichiers batch en passant par des scripts PowerShell complexes. Je recommande de le placer dans votre dossier C: \ Windows \ System32 pour plus de facilité.

La commande elevate d'origine exécute sa tâche, capture la sortie, ferme la fenêtre PowerShell ouverte, puis retourne en écrivant la sortie capturée dans la fenêtre d'origine.

J'ai créé deux variantes, elevatep et elevatex, qui respectivement mettent en pause et maintiennent la fenêtre PowerShell ouverte pour plus de travail.

https://github.com/jt-github/elevate

Et au cas où mon lien serait obsolète, voici le code du fichier batch elevate d'origine:

@Echo Off
REM Exécute une commande dans une fenêtre PowerShell élevée et capture/affiche la sortie
REM Notez que tous les chemins de fichiers doivent être entièrement qualifiés!

REM Exemple: elevate myAdminCommand -myArg1 -myArg2 someValue

if "%1"=="" (
    REM Si aucune commande n'est passée, ouvre simplement une fenêtre PowerShell avec élévation des privilèges.
    PowerShell -Command "& {Start-Process PowerShell.exe -Wait -Verb RunAs}"
) ELSE (
    REM Copie la commande+arguments (passés en paramètre) dans un fichier ps1
    REM Démarre PowerShell avec un accès élevé (confirmation de l'UAC)
    REM     et exécute le fichier ps1
    REM     puis ferme la fenêtre élevée une fois terminée
    REM Résultats capturés affichés

    IF EXIST %temp%\trans.txt del %temp%\trans.txt
    Echo %* ^> %temp%\trans.txt *^>^&1 > %temp%\tmp.ps1
    Echo $error[0] ^| Add-Content %temp%\trans.txt -Encoding Default >> %temp%\tmp.ps1
    PowerShell -Command "& {Start-Process PowerShell.exe -Wait -ArgumentList '-ExecutionPolicy Bypass -File ""%temp%\tmp.ps1""' -Verb RunAs}"
    Type %temp%\trans.txt
)

3voto

jOte- Points 51

Enregistrer ce script sous "god.cmd" dans votre system32 ou tout autre chemin pointant vers ...

Si vous ouvrez un cmd dans e:\mypictures\ et tapez god, il vous demandera des identifiants et vous remettra au même endroit en tant qu'administrateur ...

@ECHO OFF
SETLOCAL EnableDelayedExpansion EnableExtensions
NET SESSION >nul 2>&1
IF %ERRORLEVEL% NEQ 0 GOTO ELEVATE
GOTO :EOF

:ELEVATE
SET this="%CD%"
SET this=!this:\=\\!

MSHTA "javascript: var shell = new ActiveXObject('shell.application'); shell.ShellExecute('CMD', '/K CD /D \"!this!\"', '', 'runas', 1);close();"
EXIT 1

3voto

rribas Points 92

Voici une manière de s'intégrer à l'explorateur.

Intégration à l'Explorateur Windows

Voici les étapes :

  1. Créez cette clé : \HKEY_CLASSES_ROOT\Folder\shell\dosherewithadmin
  2. Changez sa valeur par défaut en ce que vous voulez voir apparaître comme texte du menu.
    Par exemple "Invite de commandes en tant qu'Admin"
  3. Créez une autre clé : \HKEY_CLASSES_ROOT\Folder\shell\dosherewithadmin\command
  4. et changez sa valeur par défaut en ceci :
    powershell.exe -Command "Start-Process -Verb RunAs 'cmd.exe' -Args '/k pushd "%1"'"
  5. C'est fait. Maintenant, faites un clic droit dans n'importe quel dossier et vous verrez votre élément parmi les autres.

*nous utilisons pushd au lieu de cd pour permettre son fonctionnement dans n'importe quel lecteur. :-)

3voto

nmeyer Points 31

Il semble y avoir beaucoup de solutions vraiment créatives à ce sujet, mais j'ai trouvé que Stiegler & Gui avaient le plus de sens pour moi. Je cherchais comment je pourrais le faire, mais en l'utilisant en conjonction avec mes informations d'identification administratives de domaine, au lieu de me fier aux autorisations locales de l'utilisateur actuel.

Voici ce que j'ai trouvé :

runas /noprofile /user:NomDuDomaine\NomUtilisateur "powershell start cmd -v runas"

Cela peut sembler redondant, mais cela me demande quand même mon mot de passe administratif et apparaît comme une invite de commandes élevée.

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