Comment ouvrir une cmd élevée à l'aide de la ligne de commande pour Windows?

109

Comment ouvrir une invite de commande élevée à l'aide de lignes de commande sur une cmd normale?

Par exemple, j'utilise runas /username:admin cmdmais le cmd qui a été ouvert ne semble pas être élevé! Des solutions?

user2633882
la source
J'ai essayé toutes les réponses.La réponse la plus utile sans aucun logiciel et le moins aucune action est stackoverflow.com/a/40942828/9217577
TheGuardener

Réponses:

166

J'ai rencontré le même problème et la seule façon dont j'ai pu ouvrir le CMD en tant qu'administrateur de CMD était de faire ce qui suit:

  1. Ouvrez CMD
  2. Écrivez powershell -Command "Start-Process cmd -Verb RunAs"et appuyez surEnter
  3. Une fenêtre pop-up apparaîtra demandant d'ouvrir un CMD en tant qu'administrateur
Gui
la source
2
Bonne réponse. J'ai ajouté et édité que j'avais l'habitude de le faire fonctionner dans une ligne de commande!
Preet Sangha
1
J'ai créé un fichier de commandes avec ceci et l'ai enregistré sous le nom admincmd.bat dans mon dossier Windows donc tout ce que j'ai à faire est de taper "admincmd" appuyez sur Entrée et il ouvre un cmd d'administration. (J'ai également ajouté une autre ligne au fichier de commandes avec " exit "donc il ferme la fenêtre cmd non admin)
Tony Brix
Pourquoi ne pas placer le cmd (et tous les paramètres) à la fin. Avoir la commande est étrange du point de vue de la lisibilité.
Eric Fossum
38

Selon la documentation , le modèle de sécurité Windows ...

n'accorde pas de privilèges administratifs en tout temps. Même les administrateurs fonctionnent avec des privilèges standard lorsqu'ils exécutent des tâches non administratives qui ne nécessitent pas de privilèges élevés.

Vous disposez de l' option Créer cette tâche avec des privilèges administratifs dans la boîte de dialogue Créer une nouvelle tâche ( Gestionnaire des tâches> Fichier> Exécuter une nouvelle tâche ), mais il n'existe aucun moyen intégré d'élever efficacement les privilèges à l'aide de la ligne de commande.

Cependant, il existe des outils tiers (reposant en interne sur les API Windows) que vous pouvez utiliser pour élever les privilèges à partir de la ligne de commande:

NirCmd :

  1. Téléchargez-le et décompressez-le.
  2. nircmdc elevate cmd

windosu :

  1. Installez-le: npm install -g windosu(nécessite node.js installé)
  2. sudo cmd
Ricardo Stuven
la source
3
Merci, nircmdc elevate route delete 0.0.0.0 mask 0..0.0 192.168.1.1enfin travaillé. Les autres runas /user:...moyens demandaient un mot de passe alors qu'ils étaient déjà un administrateur (mode batch tué).
Marcos
Merci pournircmdc elevate cmd
tim
4
Après intalling nircmd, de le faire fonctionner comme Linux sudo, créez un sudo.batfichier sur votre chemin avec ce contenu: nircmd elevate %*. Ensuite, vous pouvez faire, par exemple,sudo net stop W3SVC
Kip
1
Je pense que windosu est de loin le moyen le plus simple et le plus élégant de le faire, surtout si vous êtes un développeur ... merci mec. J'ai l'impression d'être sur le système nix: D
Emmanuel Mahuni
aimé windosu:)
Finlay Roelofs
32

Je n'ai pas assez de réputation pour ajouter un commentaire à la première réponse, mais avec la puissance des alias, vous pouvez vous en sortir en tapant simplement ce qui suit:

powershell "start cmd -v runAs"

Ceci est juste une version plus courte de l'excellente solution user3018703:

powershell -Command "Start-Process cmd -Verb RunAs"
Stiegler
la source
26

Façon simple que j'ai fait après avoir essayé d'autres réponses ici

Méthode 1: SANS programme tiers (j'ai utilisé ceci)

  1. Créez un fichier appelé sudo.bat(vous pouvez le remplacer sudopar le nom de votre choix) avec le contenu suivant powershell.exe -Command "Start-Process cmd \"/k cd /d %cd%\" -Verb RunAs"
  2. Déplacer sudo.batvers un dossier dans votre PATH; si vous ne savez pas ce que cela signifie, déplacez simplement ces fichiers versc:\windows\
  3. Cela sudofonctionnera maintenant dans la boîte de dialogue Exécuter ( win+r) ou dans la barre d'adresse de l'explorateur (c'est la meilleure partie :))

Méthode 2: AVEC un programme tiers

  1. Téléchargez NirCmd et décompressez-le.
  2. Créez un fichier appelé sudo.bat(vous pouvez le remplacer sudopar le nom de votre choix) avec le contenu suivant nircmdc elevate cmd /k "cd /d %cd%"
  3. Déplacez nircmdc.exeet sudo.batvers un dossier dans votre PATH; si vous ne savez pas ce que cela signifie, déplacez simplement ces fichiers versc:\windows\
  4. Cela sudofonctionnera maintenant dans la boîte de dialogue Exécuter ( win+r) ou dans la barre d'adresse de l'explorateur (c'est la meilleure partie :))
Dheeraj Bhaskar
la source
Bien que les deux solutions fonctionnent, malheureusement, elles entraîneront l' affichage de la boîte de dialogue UAC en haut (ordre z) mais ne se concentrera pas . (Testé sur Win10x64 v1607 build14393.447.)
Ogmios
@Ogmios c'est plutôt étrange. la boîte de dialogue fonctionne-t-elle correctement lorsqu'elle n'est pas lancée de cette manière? J'ai été très heureux d'utiliser cela sans de tels problèmes. C'est peut-être à cause d'une autre configuration que vous avez modifiée?
Dheeraj Bhaskar
Oui, la boîte de dialogue UAC fonctionne comme prévu dans toutes les autres situations (que j'ai rencontrées). C'est la seule exception. Et bien sûr, j'ai changé mon système d'une autre manière, mais je n'ai rien trouvé qui puisse avoir un effet caché sur cette boîte de dialogue.
Ogmios
@Ogmios désolé alors mec, je ne peux penser à rien d'autre que vous puissiez faire pour résoudre ce problème. Vous devriez probablement essayer les autres solutions pour voir si elles sont meilleures pour vous. Cheers
Dheeraj Bhaskar
Bien que PowerShell ne soit pas un tiers, ce n'est pas un programme boursier, et vous êtes en quelque sorte en train d'écrire un programme tiers pour atteindre l'objectif.
undrline
13

J'utilise des programmes nirsoft (par exemple nircmdc) et sysinternals (par exemple psexec) tout le temps. Ils sont très utiles.

Mais si vous ne voulez pas, ou ne pouvez pas, dl un programme tiers, voici un autre moyen, pur Windows.

Réponse courte : vous pouvez, tout en étant élevé, créer une tâche planifiée avec des privilèges élevés que vous pouvez ensuite appeler plus tard sans être élevé.

Réponse de longueur moyenne : tout en étant élevé, créez une tâche avec (mais je préfère l'interface graphique du planificateur de tâches):

schtasks /create /sc once /tn cmd_elev /tr cmd /rl highest /st 00:00

Puis plus tard, aucune élévation nécessaire, invoquez avec

schtasks /run /tn cmd_elev

Réponse longue : il y a beaucoup de détails agités; voir mon article de blog "Démarrer le programme SANS UAC, utile au démarrage du système et dans les fichiers batch (utiliser le planificateur de tâches)"

john v kumpf
la source
8

Ce qui suit en tant que fichier de commandes ouvrira une invite de commandes avec élévation de privilèges avec le chemin d'accès au même répertoire que celui à partir duquel le fichier de commandes a été appelé

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

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

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

Le commutateur "-h" est celui qui fait la magie:

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

David Rodriguez
la source
1
Pour que cela fonctionne, vous devez modifier les propriétés de psexec.exe et dans l'onglet de compatibilité, cochez "Exécuter en tant qu'administrateur". Sinon, vous obtiendrez une erreur: PSEXESVC non installé. Mais psexec provoque des problèmes avec la touche de tabulation dans cmd.exe. Impossible d'utiliser l'onglet pour compléter les noms de dossier.
Peter Quiring
Je ne sais pas sur quel environnement vous avez essayé mais je n'ai pas eu besoin de modifier le paramètre «Exécuter en tant qu'administrateur» (essayez-vous d'exécuter cmd.exe sur une machine distante à partir de la vôtre?). Aussi pas de problèmes avec la touche de tabulation, je peux compléter avec succès les noms de fichiers et de dossiers (au moins testé sur Win8.1 et Win10, fonctionnant à la fois à partir des lignes de commande cmd et PowerShell)
David Rodriguez
J'utilise Win10 et je l'exécute localement. Je ne sais pas pourquoi cela m'arrive et pas toi. J'ai fait fonctionner nircmd et cela ne pose pas de problème d'onglet.
Peter Quiring
Je remarque également que l'on ne peut pas effectuer de saisie semi-automatique avec la touche de tabulation, mais au moins cela ouvrirait une invite cmd élevée dans le contexte d'un autre utilisateur, ce que les méthodes précédentes ci-dessus ne semblaient pas atteindre lorsque j'ai essayé. Le drapeau «-h» est génial (Windows 10), fonctionne un régal.
user1840734
4

Faites en sorte que le fichier de commandes enregistre les informations d'identification du compte administrateur réel à l'aide du /savecredcommutateur. Cela demandera les informations d'identification la première fois, puis stockera le mot de passe crypté dans le gestionnaire d'informations d'identification. Ensuite, pour toutes les exécutions ultérieures du lot, il s'exécutera en tant qu'administrateur complet mais ne demandera pas d'informations d'identification car elles sont stockées cryptées dans le gestionnaire d'informations d'identification et l'utilisateur final ne peut pas obtenir le mot de passe. Les éléments suivants devraient ouvrir un CMD élevé avec des privilèges d'administrateur complets et ne demanderont le mot de passe que la première fois:

START c:\Windows\System32\runas.exe /user:Administrator /savecred cmd.exe
Stefan Gadecki
la source
3

Bien que les deux solutions fournies par Dheeraj Bhaskar fonctionnent, malheureusement, elles entraîneront l' affichage de la boîte de dialogue UAC en haut (ordre z) mais ne se concentrant pas (la fenêtre focalisée est la fenêtre cmd / powershell de l'appelant), donc je dois soit saisissez la souris et cliquez sur "oui", ou pour sélectionner la fenêtre UAC en utilisant Alt + Maj + Tab. (Testé sur Win10x64 v1607 build14393.447; UAC = "[...] do not dim [...]" .)

La solution suivante est un peu délicate car elle utilise deux fichiers, mais elle préserve le bon ordre de mise au point, donc aucune action supplémentaire de la souris / du clavier n'est requise (en plus de confirmer la boîte de dialogue UAC: Alt + Y ).

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

Courez avec su.

Ogmios
la source
Je ne peux malheureusement pas reproduire cela. Chaque fois que j'utilise l'une de mes solutions. Mon invite UAC est concentrée et au top
Dheeraj Bhaskar
3

J'utilise Elevatedepuis un moment maintenant.

C'est la description - This utility executes a command with UAC privilege elevation. This is useful for working inside command prompts or with batch files.

Je copie le bin.x86-64\elevate.exede .zipdans C:\Program Files\elevateet ajoute ce chemin à mon PATH.

Ensuite, GitBash je peux exécuter quelque chose comme elevate sc stop W3SVCdésactiver le IISservice.

L'exécution de la commande me donne la UACboîte de dialogue, correctement focalisée avec le contrôle du clavier et en acceptant la boîte de dialogue, je retourne dans mon shell.

seangwright
la source
3

..

@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

enregistrez ce script sous "god.cmd" dans votre system32 ou quel que soit votre chemin vers ...

si vous ouvrez une cmd dans e: \ mypictures \ et tapez god, il vous demandera des informations d'identification et vous remettra au même endroit que l'administrateur ...

jOte-
la source
1
PowerShell est cool mais il a besoin de modules zo ... im oldscool ... juste besoin du système ...
jOte-
Cette méthode / astuce d'élévation fonctionne-t-elle également pour les longs chemins / noms de fichiers? Ou suis-je censé utiliser à la place "% ~ snx0" ou "% ~ dpsnx0"?
script'n'code
2

Semblable à certaines des autres solutions ci-dessus, j'ai créé un elevatefichier de commandes qui exécute une fenêtre PowerShell surélevée, en contournant la stratégie d'exécution pour permettre l'exécution de tout, des commandes simples aux fichiers de commandes en passant par les scripts PowerShell complexes. Je recommande de le coller dans votre dossier C: \ Windows \ System32 pour une utilisation facile.

La elevatecommande d' origine exécute sa tâche, capture la sortie, ferme la fenêtre PowerShell générée, puis revient, en écrivant la sortie capturée dans la fenêtre d'origine.

J'ai créé deux variantes, elevatepet 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 mourrait, voici le code du fichier de commandes élevé d'origine:

@Echo Off
REM Executes a command in an elevated PowerShell window and captures/displays output
REM Note that any file paths must be fully qualified!

REM Example: elevate myAdminCommand -myArg1 -myArg2 someValue

if "%1"=="" (
    REM If no command is passed, simply open an elevated PowerShell window.
    PowerShell -Command "& {Start-Process PowerShell.exe -Wait -Verb RunAs}"
) ELSE (
    REM Copy command+arguments (passed as a parameter) into a ps1 file
    REM Start PowerShell with Elevated access (prompting UAC confirmation)
    REM     and run the ps1 file
    REM     then close elevated window when finished
    REM Output captured results

    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
)
Lynx de l'ombre
la source
0

Peut utiliser une variable d'environnement temporaire à utiliser avec un raccourci élevé (

start.cmd

setx valueName_betterSpecificForEachCase %~dp0
"%~dp0ascladm.lnk"

ascladm.lnk (raccourci)

_ properties\advanced\"run as administrator"=yes

(pour modifier le chemin, vous devrez créer temporairement le env.Variable)

_ properties\target="%valueName_betterSpecificForEachCase%\ascladm.cmd"

_ properties\"start in"="%valueName_betterSpecificForEachCase%"

ascladm.cmd

setx valueName_betterSpecificForEachCase=
reg delete HKEY_CURRENT_USER\Environment /F /V valueName_betterSpecificForEachCase
"%~dp0fileName_targetedCmd.cmd"

) (TargetCmd est exécuté dans une fenêtre cmd élevée)

Bien qu'il s'agisse de 3 fichiers, vous pouvez tout placer (y compris targetCmd) dans un sous-dossier (n'oubliez pas d'ajouter le folderName aux correctifs) et renommer "start.cmd" en un seul nom

Pour moi, cela ressemble à la manière la plus native de faire cela, alors que cmd n'a pas la commande nécessaire

ilia
la source
J'ai lu toutes les solutions ci-dessus et les ai comprises. je ne comprends pas vos étapes. Je choisis une solution avec les meilleurs avantages et inconvénients.
Dzmitry Lahoda
0

Je ne suis pas sûr que l'outil ExecElevated.exe (13KB) fera le travail ... mais il pourrait. Ou du moins être utile pour les autres avec des besoins similaires qui sont venus sur cette page comme moi (mais je n'ai pas trouvé la solution donc j'ai fini par créer l'outil moi-même dans .Net).

Il exécutera une application avec un jeton élevé (en mode administrateur). Mais vous obtiendrez une boîte de dialogue UAC pour confirmer! (peut-être pas si l'UAC a été désactivé, ne l'avez pas testé).

Et le compte appelant l'outil doit également avoir admin. droits bien sûr.

Exemple d'utilisation:

ExecuteElevated.exe "C:\Utility\regjump.exe HKCU\Software\Classes\.pdf"
MrCalvin
la source
2
J'adore les réponses avec "Cela pourrait ne pas fonctionner encore testé", et bien sûr celle avec "pas sûr" ....
Giridhar Karnik
1
le lien est rompu.
Dzmitry Lahoda
Lien rétabli, désolé pour cela
MrCalvin
0

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

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

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

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

;) Frode

Frode Severin Hatlevik
la source
0

Voici une manière d'intégrer l'explorateur. Il fera apparaître un élément de menu supplémentaire lorsque vous cliquez avec le bouton droit dans n'importe quel dossier de l'Explorateur Windows:

Intégration de l'Explorateur Windows

Voici les étapes:

  1. Créez cette clé: \ HKEY_CLASSES_ROOT \ Folder \ shell \ dosherewithadmin
  2. Remplacez sa valeur par défaut par celle que vous souhaitez voir apparaître comme texte de l'élément de menu. Ex "DOS Shell en tant qu'administrateur"
  3. Créez cette autre clé: \ HKEY_CLASSES_ROOT \ Folder \ shell \ dosherewithadmin \ command
  4. Remplacez sa valeur par défaut par ipsis litteris: 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 là-bas dans les autres éléments.

* Utilisez pushd au lieu de cd pour lui permettre de fonctionner sur n'importe quel lecteur. :-)

rribas
la source
-1

Vous pouvez utiliser la syntaxe suivante, j'avais la même question et je ne pensais pas qu'un script devrait être nécessaire.

runas / profil / utilisateur: domaine \ nom d'utilisateur cmd

Cela a fonctionné pour moi, cela peut être différent sur votre réseau.

Sean Golash
la source
-1

Utilisez simplement la commande: runas / noprofile / user: administrator cmd

Thủy Chu
la source
-2

Je l'ai fait facilement en utilisant cette commande suivante dans cmd

runas / netonly / utilisateur: Administrateur \ Administrateur cmd

après avoir tapé cette commande, vous devez entrer votre mot de passe administrateur (si vous ne connaissez pas votre mot de passe administrateur, laissez-le vide et appuyez sur Entrée ou tapez quelque chose, a fonctionné pour moi).

Harish Regada
la source
ne m'a pas aidé
Dzmitry Lahoda
@DzmitryLahoda pouvez-vous me dire l'erreur que vous avez?
Harish Regada
-2

Appuyez sur la touche Windows + X et vous pouvez maintenant sélectionner le Powershell ou l'invite de commande avec des droits d'administrateur. Fonctionne si vous êtes l'administrateur. La fonction peut être inutilisable si le système n'est pas le vôtre.

À M
la source
-5

Il existe plusieurs façons d'ouvrir une cmd élevée, mais seule votre méthode fonctionne à partir de l'invite de commande standard. Il vous suffit de mettre usernon username:

runas /user:machinename\adminuser cmd

Consultez l'aide pertinente de la communauté Microsoft .

Mat
la source
4
Ce n'est pas la même chose que d'exécuter une commande élevée, car lorsque j'ouvre une fenêtre cmd élevée et que je tape "whoami", cela donne le même résultat qu'une fenêtre non élevée. Lorsque je lance "whoami / all" dans les deux cas, je peux voir les différences en termes d'autorisations pour le même utilisateur.
Constantino Cronemberger
-5

J'ai utilisé runas /user:domainuser@domain cmdce qui a ouvert une invite élevée avec succès.

JasonC
la source
Il nécessite les informations d'identification d'un autre utilisateur. Si vous êtes déjà administrateur et que vous souhaitez exécuter avec des privilèges élevés, comme lorsque vous cliquez avec le bouton droit sur une application et choisissez Exécuter en tant qu'administrateur et qu'aucun mot de passe n'est demandé, juste une boîte de dialogue de confirmation, vous avez besoin d'autre chose. Je suis venu ici à la recherche de cette réponse mais ne semble pas être ici.
Paul-Sebastian Manole