Comment puis-je toujours exécuter l'invite de commande en tant qu'administrateur?

104

En tant que développeur, j'ai souvent besoin d'ouvrir une invite de commande à diverses fins. Par exemple, je l’utilise iisresetpour redémarrer mon serveur Web local.

J'ouvre généralement la fenêtre de commande de l'une des deux manières suivantes:

  1. Appuyez sur Win, tapez "cmd" et appuyez surEnter
  2. Dans l'explorateur, maintenez Shiftenfoncé le bouton droit de la souris sur un dossier et choisissez "Ouvrir la fenêtre de commande ici".

Cependant, lorsque j'ouvre la fenêtre de commande de l'une ou l'autre de ces manières, je ne dispose pas des privilèges d'administrateur complets auxquels je pense avoir le droit.

Je suis un administrateur, mais cmd.exe ne le sait pas.

Pour exécuter des applications réservées aux administrateurs, je dois ouvrir la ligne de commande de cette manière relativement laborieuse:

  1. Appuyez sur Win, tapez "cmd"
  2. Attendez que le menu soit rempli
  3. Soulevez la main du clavier et placez-la sur la souris
  4. Faites un clic droit sur l'élément de menu "cmd.exe"
  5. Choisissez "Exécuter en tant qu'administrateur"

Ceci est inacceptable pour plusieurs raisons:

  • La fenêtre s'ouvre toujours dans C: \ windows \ system32 plutôt que dans mon Usersrépertoire (comme dans la technique approuvée 1) ou dans le dossier dans lequel je veux être (comme dans la technique approuvée 2). Je dois donc souvent changer de répertoire pour arriver là où je veux aller.
  • Ce processus est plusieurs millisecondes plus lent que l'une de mes méthodes préférées. Joué plusieurs fois par jour, tous les jours jusqu'à la fin de ma carrière, cela représente environ dix jours de perte de temps passé à cliquer, à attendre et à changer de répertoire.
  • En tant que programmeur, effectuer une tâche robotique inutile me cause une grande douleur émotionnelle.
  • En tant que programmeur, lever la main est une tâche ardue qui me cause une grande douleur physique.

C'est pourquoi je recherche une solution unique permettant aux techniques approuvées d'ouvrir les invites de commande administrateur.

De nombreux programmes vous permettent de modifier définitivement leur niveau de privilège par défaut à partir du menu Propriétés. Invite de commandes n'est pas l'un de ces programmes.

entrez la description de l'image ici

Comment faire en sorte que la fenêtre de commande soit exécutée en tant qu'administrateur par défaut (même si vous utilisez l'option de menu contextuel "Ouvrir la fenêtre de commande ici")?

Kevin
la source
Pourquoi ne pas simplement changer UAC pour élever seulement?
surfasb
Je ne vois pas d'option "Elevate Only" sur mon curseur UAC. Faites-vous référence à quelque chose en plus de la fenêtre Paramètres du contrôle de compte d'utilisateur?
Kevin
6
Je pense que c'est l'heure du marteau ...
ThunderToes le

Réponses:

88

Pour répondre à la première partie de votre question, lorsque vous appuyez sur la touche Windows et tapez "CMD", vous pouvez appuyer sur Ctrl+ Shift+ Enterpour ouvrir en tant qu'administrateur.

Pour répondre à la deuxième partie de votre question, collez le texte suivant dans le bloc-notes et enregistrez-le avec l'extension ".reg":

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\runas]
@="Open Command Window Here as Administrator"

[HKEY_CLASSES_ROOT\Directory\shell\runas\command]
@="cmd.exe /s /k pushd \"%V\""

Puis lancez le fichier. Il va fusionner les modifications dans le registre et ajouter l'option à vos menus contextuels. (Pas de touche shift nécessaire.)

Jesse
la source
7
Remarque; vous devrez toujours accepter l'invite UAC dans les deux cas.
Synetech
1
Registre edit ne fonctionne pas dans Windows 8.
Biker John
Le correctif de registre fonctionne pour le serveur 2012 R2
fiat
Cela n'a pas fonctionné pour moi sur Windows 7
Hello Universe
1
Si vous ne voyez pas la commande après avoir exécuté le fichier reg, déconnectez-vous de Windows et
reconnectez
38

De nombreux programmes vous permettent de modifier définitivement leur niveau de privilège par défaut à partir du menu Propriétés. Invite de commandes n'est pas l'un de ces programmes.

L' onglet Compatibilité est complètement désactivé pour tous les exécutables Windows:

entrez la description de l'image ici

Pour définir les privilèges d'administrateur pour les exécutables Windows, vous devez créer un raccourci et utiliser l' onglet RaccourciAdvanced(l'élément d'invite de commande du menu Démarrer est déjà un raccourci):

entrez la description de l'image ici

La fenêtre s'ouvre toujours dans C: \ windows \ system32, plutôt que dans mon répertoire Utilisateurs (comme dans la technique approuvée 1) ou dans le dossier dans lequel je veux être (comme dans la technique approuvée 2). Je dois donc souvent changer de répertoire pour arriver là où je veux aller.

Cela est normal et logique car si vous ouvrez une invite de commande de l’administrateur, vous effectuez probablement certaines actions système pour lesquelles vous avez besoin de privilèges d’administrateur au lieu d’actions d’utilisateur pour lesquelles vous disposez déjà d’autorisations.

Vous pouvez définir le répertoire par défaut globalement en ajoutant / modifiant l' Autorunentrée de registre (il n'est même pas nécessaire que ce soit une chaîne extensible pour utiliser des variables d'environnement):

REGEDIT4
[HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
"Autorun"="cd /d \"%userprofile%\""

Désormais, chaque fois que vous ouvrez une invite de commande à l' aide d'une méthode quelconque , le répertoire par défaut de votre répertoire (ainsi que, techniquement, change ) est automatiquement ajouté .

Mieux encore, vous pouvez ajouter d'autres commandes à exécuter automatiquement chaque fois que vous ouvrez une invite de commande à l'aide de l' &opérateur (par exemple, cd /d %userprofile% & cls & dir). En outre, vous pouvez définir la même valeur dans la même clé sous la HKLMbranche pour la définir pour tous les utilisateurs.


Notez que vous devrez toujours accepter l'invite UAC. Malheureusement, il n’existe (actuellement?) Aucun moyen de créer une «liste blanche» de programmes de confiance UAC afin que l’invite de commande puisse être exécutée en tant qu’administrateur sans avoir à accepter l’invite. Cela vous laisse avec quelques options.

  • Vous pouvez désactiver ou désactiver le contrôle de compte d'utilisateur ( useraccountcontrolsettings.exe)
  • Vous pouvez utiliser un programme d'élévation de privilèges comme Elevator, appelé Elevate Me ou Elevation PowerToy.
  • Créez une tâche planifiée surélevée , entrez les informations d'identification (une fois) pour elle, puis créez un raccourci vers la tâche.

Dans le premier cas, vous évitez le contrôle de compte d'utilisateur alors que dans les deux derniers cas, vous ne saisissez vos informations d'identification qu'une seule fois lors de la création du raccourci.

Synetech
la source
Il y a un problème avec la configuration du répertoire actuel via autorun. Lorsque cette valeur est définie, l' cd /d "%userprofile%"exécution automatique s'exécute non seulement lors de l'ouverture d'une nouvelle fenêtre de console, mais également chaque fois qu'un nouveau thread d'exécution est appelé. Cela peut causer des problèmes, par exemple, avec des for /fboucles. Essayez ceci à une invite de commande: cd "\Program Files"alors for /f "delims=" %I in ('cmd /c cd') do @echo %I. Vous verrez que la for /fboucle pense que son répertoire de travail actuel est $ home et non pas Program Files. Il est plus sûr de modifier le cmdraccourci et de définir la cible comme "%comspec%" /k cd /d "%userprofile%".
rojo
Si vous souhaitez conserver la version de Windows et les informations de copyright lorsque vous ouvrez une nouvelle fenêtre de console, définissez la cible du raccourci sur%comspec% /c cd /d "%USERPROFILE%" & %comspec%
rojo
+1 pour la réponse d'édition non-registre. L'autre réponse aurait peut-être été bien en 2012, mais je ne veux pas l'essayer sur Windows 10 aujourd'hui.
Alan
19

La solution que j'utilise consiste à ouvrir l'invite de commande en ouvrant le menu Démarrer, en tapant 'cmd' et en appuyant sur Ctrl+ Shift+ Enter. Le programme sélectionné sera lancé en tant qu'administrateur.

Dracs
la source
1
Existe-t-il une alternative qui ne nécessite pas de "recherche"? (car d'après ce que je sais taper dans la boîte, les choses sont en train de chercher)
Pacerier
La seule autre manière que je connaisse est la réponse de Luke, désactivez UAC. La recherche de cmd est assez rapide et ne parvient même pas à appuyer sur Ctrl + Maj + Entrée avant de la trouver.
Dracs
Je le fais tout le temps sur les ordinateurs des clients. CMD est très rapide
Canadian Luke
Est-ce que cela va le charger en tant qu'administrateur?
Barlop
@barlop Oui, ce raccourci clavier (Ctrl + Maj + Entrée) lancera le programme en surbrillance dans le menu Démarrer en tant qu'administrateur.
Dracs
12

Pour exécuter automatiquement en CMDtant qu'administrateur chaque fois que vous cliquez dessus (sans avoir à cliquer avec le bouton droit de la souris ou à créer des raccourcis supplémentaires), il existe une solution simple à cela:

  1. Dans l' éditeur de registre , accédez à:
    HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

    • S'il n'y a pas de Layersdossier , vous devrez en créer un et le nommer:
      Cliquez avec le bouton droit sur le AppCompatFlagsdossier, sélectionnez NewKey
  2. Faites un clic droit Layers, sélectionnez NewString Value. Définissez le nom de votre nouvelle valeur de chaîne sur le chemin d'accès complet à l' CMD.EXEinvite de commande ( ) (c'est-à-dire C:\Windows\System32\cmd.exe)

  3. Double-cliquez sur la nouvelle valeur de chaîne pour la modifier et définissez les "Données de la valeur" sur RUNASADMIN.

J'ai eu la même contrariété, et cela a fonctionné pour moi.

Bleu
la source
11

Si vous voulez que CMD.exe soit toujours exécuté en tant qu'administrateur, ajoutez simplement le code reg ci-dessous à votre registre:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\\Windows\\System32\\cmd.exe"="~ RUNASADMIN"
"C:\\Windows\\SysWOW64\\cmd.exe"="~ RUNASADMIN"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\\Windows\\System32\\cmd.exe"="~ RUNASADMIN"
"C:\\Windows\\SysWOW64\\cmd.exe"="~ RUNASADMIN"
M Sasan MH
la source
2
Cela a fonctionné pour moi sur Windows 8.1. Maintenant, je viens de frapper Windows-R, cmd, Entrée. Cela fonctionne également pour ouvrir une fenêtre de commande à partir de l'Explorateur de fichiers via Shift-RightClick> Ouvrir la fenêtre de commande ici.
Troy Gizzi
1
Si cela fonctionne, la réponse est correcte, malgré la version beaucoup plus longue actuellement acceptée.
Xodarap777
Cela fonctionne aussi pour Windows 10. Mettez le contenu dans le bloc-notes, enregistrez-le avec une extension .reg et exécutez-le
Chris Halcrow
Ca n'a pas marché pour moi. La partie HKLM ne s'est même pas inscrite, pour une raison quelconque. Débattez pour savoir si cela fonctionne toujours: superutilisateur.com/questions/961573/… , avec alternatives.
Ray Woodcock
4

Il y a quelques outils que j'ai utilisés qui étaient d'autres solutions de contournement (en plus de ce que Jesse a mentionné).

Lorsque Vista a été lancé pour la première fois, Microsoft a mis au point un powerToy " élevé " qui était très utile et qui a fait le travail. Pourtant, je pense que (non testé) fonctionne pour Windows 7. Placez-le dans votre environnement de chemin et vous pouvez exécuter "elevate iisreset" à partir d'une invite de commande normale (ou même "elevate cmd" à partir du démarrage / exécution ou créer un raccourci)

Rex
la source
Voici un lien direct vers le téléchargement.
ashleedawg
4

Le moyen le plus simple de contourner les difficultés rencontrées par le contrôle de compte d'utilisateur, etc. consiste à configurer une entrée de planification de tâches pour exécuter cmd.exe avec les privilèges les plus élevés. Ne créez pas d'événement de déclenchement et assurez-vous que la case à cocher Autoriser la tâche à être exécutée à la demande est activée dans l'onglet Paramètres. Dans l'onglet Paramètres, assurez-vous également que la liste déroulante "Si la tâche est déjà en cours d'exécution, la règle suivante s'applique" est définie sur Ne pas démarrer une nouvelle instance.

Créez ensuite un raccourci vers celui-ci sur votre bureau et lancez-le à partir de là, ou via un raccourci clavier ou épinglez le raccourci dans la barre des tâches.

Je l'ai fait sur mon système Windows 7 et cela fonctionne parfaitement.

Peter Wills
la source
1
Oups, j'ai oublié de préciser une chose importante. Voici le chemin cible pour le raccourci vers la tâche. C: \ Windows \ System32 \ schtasks.exe / run / TN "invite de commande sans UAC". Le texte à l'intérieur des guillemets est ce que vous nommez la tâche lorsque vous créez la tâche.
Peter Wills
n'incluez pas votre identifiant de messagerie dans vos réponses
BlueBerry - Vignesh4303
2

Copiez et collez simplement cmd.exe et renommez-le sous le nom "cmda.exe" dans le dossier \ system32 \ (337 ko n’est même pas une grosse affaire ...). L'option "Exécuter en tant qu'administrateur" dans les propriétés de cmda.exe ne sera plus grisée et vous pouvez la configurer pour qu'elle soit toujours exécutée en tant qu'administrateur. Vous avez maintenant deux invites de commande: la première est régulière, la deuxième dispose d'un privilège (a) dmin. Il est aussi facile de taper "cmda" dans la Winbarre de recherche qu'avec "cmd"!

Pour le menu contextuel de cmd avec les privilèges d’administrateur, assurez-vous que cmda.exe est déjà en place, ajoutez-le dans un nouveau fichier .reg et lancez-le.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\cmda]
@="Open command window here (Administrator)"
"HasLUAShield"=""
"Extended"=""

[HKEY_CLASSES_ROOT\Directory\Background\shell\cmda\Command]
@="cmda.exe /s /k pushd \"%V\""

Vous verrez deux mêmes lignes dans le menu contextuel (shift); une invite de commande non surélevée et une autre avec "(administrateur)" ajouté dans.

C'est ça...

Ikana
la source
1

Créez un raccourci vers cmd.exe, cliquez avec le bouton droit de la souris et sélectionnez les propriétés. Dans l'onglet Raccourci, sélectionnez Avancé, cochez la case Exécuter en tant qu'administrateur.

WinOutreach2
la source
1

Je pense que le moyen le plus simple de toujours exécuter cmd en tant qu'administrateur est de créer le fichier .reg avec le code ci-dessous:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
@="C:\\Windows\\System32\\cmd.exe"="RUNASADMIN"

Collez-le dans le bloc-notes ou quelque chose et enregistrez-le en tant que fichier .reg. Remarque: Cela rend l'invite de commande exécutée en tant qu'administrateur pour tous les utilisateurs. Pour toujours fonctionner en tant qu'administrateur uniquement sur votre utilisateur, il suffit de remplacer HKEY_LOCAL_MACHINE par HKEY_CURRENT_USER.

utilisateur281995
la source
1

Tout cela grâce à Jesse Brohinsky

Une version plus améliorée. Cela inclut également le répertoire d'arrière-plan qui vous permet également d'ouvrir à partir du dossier. Aussi, pour le plaisir, vous pouvez ouvrir le commandpromt en tant que non administrateur.

Vous pouvez également désactiver AdminApprovalMode. De cette façon, vous n'avez pas besoin de vous lancer en tant qu'administrateur lorsque vous êtes administrateur. http://helpdeskgeek.com/windows-7/turn-off-admin-approval-mode-in-windows-7/

Windows Registry Editor Version 5.00
;write minus before to unreg example: [-HKEY_CLASSES_ROOT\Directory\shell\cmdhere]

[HKEY_CLASSES_ROOT\Directory\shell\cmdhere]
@="Open Command Window Here"

[HKEY_CLASSES_ROOT\Directory\shell\cmdhere\command]
@="cmd.exe /s /k pushd \"%V\""

[HKEY_CLASSES_ROOT\Directory\Background\shell\cmdhere]
@="Open Command Window Here"

[HKEY_CLASSES_ROOT\Directory\Background\shell\cmdhere\command]
@="cmd.exe /s /k pushd \"%V\""

[HKEY_CLASSES_ROOT\Directory\shell\runas]
@="Open Command Window Here as Administrator"

[HKEY_CLASSES_ROOT\Directory\shell\runas\command]
@="cmd.exe /s /k pushd \"%V\""

[HKEY_CLASSES_ROOT\Directory\Background\shell\runas]
@="Open Command Window Here as Administrator"

[HKEY_CLASSES_ROOT\Directory\Background\shell\runas\command]
@="cmd.exe /s /k pushd \"%V\""
ColacX
la source
0

Le seul autre moyen, mis à part ce que Dracs a mentionné, est de désactiver complètement le contrôle de compte d'utilisateur.

Canadien Luke
la source
0

Ce qui suit fonctionne pour moi

@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
    if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
    pushd "%CD%"
    CD /D "%~dp0"
:--------------------------------------

vous obtiendrez la même invite uac confirmant l’administration runas .. l’a trouvée il y a quelque temps @ stackexchange

sudhi
la source