web-dev-qa-db-fra.com

Comment puis-je toujours exécuter la commande Invite en tant qu'administrateur?

En tant que développeur, j'ai souvent besoin d'ouvrir une invite de commande à diverses fins. Par exemple, j'utilise iisreset pour 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. Presse Win, tapez "cmd" et appuyez sur Enter
  2. Dans l'explorateur, maintenez Shift et faites un clic droit sur un dossier, et choisissez "Ouvrir la fenêtre de commande ici"

Toutefois, 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.

I am an administrator, but cmd.exe doesn't know that

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

  1. Presse 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 répertoire Users (comme dans la technique approuvée 1) ou dans le dossier dans lequel je veux être (comme dans la technique approuvée 2). Donc, je dois 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.

enter image description here

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

101
Kevin

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 + Enter 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.)

87
Jesse

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 tout des exécutables Windows:

enter image description here

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

enter image description here

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). Donc, je dois souvent changer de répertoire pour arriver là où je veux aller.

C’est normal et logique puisque si vous ouvrez une invite de commande admin, 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'entrée de registre Autorun (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 quelle que soit la méthode utilisée, le système (par défaut, techniquement répertoire de modifications) sera automatiquement remplacé par défaut dans votre répertoire de profil utilisateur.

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 branche HKLM 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 tel que Elevator aka Elevate Me ou le Elevation PowerToy
  • Créez une tâche surélevée planifiée , entrez les informations d'identification (une fois) correspondante, puis créez un raccourci vers la tâche.

Dans le premier cas, vous évitez complètement 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.

37
Synetech

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

19
Dracs

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

  1. Dans le Éditeur du registre , accédez à:
    HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

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

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

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

12
Blue

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"
11
M Sasan MH

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é).

À l'époque de la première utilisation de Vista, Microsoft proposait un powerToy " elevate " qui était très utile et qui remplissait parfaitement son rôle. Néanmoins, 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" depuis le début/l'exécution ou créer un raccourci)

4
Rex

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 déclencheur 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 qui 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.

4
Peter Wills

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 un gros problème ...). 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 Win barre de recherche comme vous le faites 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 tout...

2
Ikana

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\""
1
ColacX

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

1
WinOutreach2

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: La commande Invite de commande est 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.

1
user281995

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

0
Canadian Luke

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 le même message uac confirmant que vous avez runas admin .. l’a trouvé il y a quelque temps @ stackexchange

0
sudhi