Come posso sempre eseguire il prompt dei comandi come amministratore?


104

Come sviluppatore, ho spesso la necessità di aprire un prompt dei comandi per vari scopi. Ad esempio, utilizzo iisresetper riavviare il mio server Web locale.

In genere apro la finestra di comando in due modi:

  1. Premere Win, digitare "cmd" e premereEnter
  2. In Explorer, tieni premuto Shifte fai clic con il pulsante destro del mouse su una cartella e scegli "Apri finestra di comando qui"

Tuttavia, quando apro la finestra di comando in uno di questi modi, non ho tutti i privilegi di amministratore di cui mi sento autorizzato.

Sono un amministratore, ma cmd.exe non lo sa

Per eseguire applicazioni solo per l'amministratore, devo aprire la riga di comando in questo modo relativamente laborioso:

  1. Premere Win, digitare "cmd"
  2. Attendere che il menu venga popolato
  3. Solleva la mano dalla tastiera e mettila sul mouse
  4. Fare clic con il tasto destro del mouse sulla voce di menu "cmd.exe"
  5. Scegli "Esegui come amministratore"

Questo è inaccettabile per diversi motivi:

  • La finestra si apre sempre in C: \ windows \ system32, anziché nella mia Usersdirectory (come nella tecnica approvata 1) o nella cartella in cui voglio trovarmi (come nella tecnica approvata 2). Quindi spesso devo cambiare directory per arrivare dove voglio andare.
  • Questo processo è più lento di alcuni millisecondi rispetto a uno dei miei metodi preferiti. Eseguito più volte al giorno, tutti i giorni per il resto della mia carriera, aggiunge fino a una decina di giorni di tempo perso trascorsi facendo clic e aspettando e cambiando directory.
  • Come programmatore, svolgere un inutile compito robotico mi provoca un grande dolore emotivo.
  • Come programmatore, alzare la mano è un compito faticoso che mi provoca un grande dolore fisico.

Questo è il motivo per cui sto cercando una soluzione completa che consentirà alle tecniche approvate 1 e 2 di aprire i prompt dei comandi dell'amministratore.

Molti programmi consentono di modificare permanentemente il livello di privilegio predefinito dal menu Proprietà. Il prompt dei comandi non è uno di quei programmi.

inserisci qui la descrizione dell'immagine

Come faccio a far funzionare la finestra di comando come amministratore per impostazione predefinita (anche quando utilizzo l'opzione del menu di scelta rapida "Apri finestra di comando qui")?


Perché non cambiare UAC solo per elevare solo?
surfasb,

Non vedo un'opzione "eleva solo" sul mio dispositivo di scorrimento UAC. Ti riferisci a qualcosa oltre alla finestra Impostazioni controllo account utente?
Kevin,

6
Penso che sia Hammer Time ...
ThunderToes

Risposte:


88

Per rispondere alla prima parte della tua domanda, quando premi il tasto Windows e digiti "CMD" puoi premere Ctrl+ Shift+ Enterper aprire come amministratore.

Per rispondere alla seconda parte della domanda, incolla quanto segue nel blocco note e salvalo con l'estensione ".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\""

Quindi eseguire il file. Unirà le modifiche nel registro e aggiungerà l'opzione ai menu di scelta rapida. (Non è necessario il tasto Maiusc.)


7
Nota; dovrai comunque accettare il prompt UAC in entrambi i casi.
Synetech,

1
La modifica del registro non funziona in Windows 8.
Biker John,

La patch di registro funziona per Server 2012 R2
fiat

Non ha funzionato per me su Windows 7
Hello Universe

1
Se non vedi il comando dopo aver eseguito il file reg, esci da Windows e accedi nuovamente.
trebormf

38

Molti programmi consentono di modificare permanentemente il livello di privilegio predefinito dal menu Proprietà. Il prompt dei comandi non è uno di quei programmi.

La scheda Compatibilità è completamente disabilitata per tutti gli eseguibili di Windows:

inserisci qui la descrizione dell'immagine

Per impostare i privilegi di amministratore per gli eseguibili di Windows, è necessario creare un collegamento e utilizzare la scheda CollegamentoAdvanced(l'elemento del prompt dei comandi nel menu Start è già un collegamento):

inserisci qui la descrizione dell'immagine

La finestra si apre sempre in C: \ windows \ system32, anziché nella mia directory Users (come nella tecnica approvata 1) o nella cartella in cui voglio trovarmi (come nella tecnica approvata 2). Quindi spesso devo cambiare directory per arrivare dove voglio andare.

Ciò è normale e ha senso poiché, se si apre un prompt dei comandi dell'amministratore, probabilmente si stanno eseguendo alcune azioni di sistema per le quali sono necessari i privilegi di amministratore anziché le azioni dell'utente per le quali si dispone già delle autorizzazioni.

È possibile impostare la directory predefinita a livello globale aggiungendo / modificando la Autorunvoce di registro (non deve essere nemmeno una stringa espandibile per utilizzare le variabili di ambiente):

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

Ora, ogni volta che apri un prompt dei comandi utilizzando qualsiasi metodo , la directory predefinita del tuo profilo utente verrà automaticamente impostata (beh, tecnicamente cambia directory ).

Ancora meglio, è possibile aggiungere altri comandi da eseguire automaticamente ogni volta che si apre un prompt dei comandi utilizzando l' &operatore (ad esempio, cd /d %userprofile% & cls & dir). Inoltre, puoi impostare lo stesso valore nella stessa chiave sotto il HKLMramo per impostarlo per tutti gli utenti.


Nota che dovrai comunque accettare il prompt UAC. Sfortunatamente non esiste (attualmente?) Alcun modo per creare una "whitelist" UAC di programmi attendibili in modo che il prompt dei comandi possa essere eseguito come amministratore senza dover accettare il prompt. Questo ti lascia con (a) poche opzioni.

  • Puoi disattivare o disattivare UAC del tutto ( useraccountcontrolsettings.exe)
  • È possibile utilizzare un programma di elevazione dei privilegi come Elevator aka Elevate Me o Elevation PowerToy
  • Creazione di un elevato in programma compito , inserire le credenziali (una volta) per esso, e quindi creare un collegamento al compito

Nel primo caso, eviti del tutto il controllo dell'account utente mentre negli ultimi due, inserisci le tue credenziali solo una volta durante la creazione del collegamento.


Si è verificato un problema con l'impostazione della directory corrente tramite l'esecuzione automatica. Con quel valore impostato, l' cd /d "%userprofile%"autorun non solo quando si apre una nuova finestra della console, ma anche ogni volta che viene invocato un nuovo thread di esecuzione. Ciò può causare problemi, ad esempio, con i for /floop. Prova questo a un prompt cmd: cd "\Program Files"quindi for /f "delims=" %I in ('cmd /c cd') do @echo %I. Vedrai che il for /fciclo pensa che la sua directory di lavoro corrente sia $ home, non Programmi. È più sicuro modificare il cmdcollegamento e impostare l'obiettivo come "%comspec%" /k cd /d "%userprofile%".
rojo,

Se si desidera conservare la versione di Windows e le informazioni sul copyright quando si apre una nuova finestra della console, impostare la destinazione del collegamento su%comspec% /c cd /d "%USERPROFILE%" & %comspec%
rojo

+1 per la risposta di modifica non di registro. L'altra risposta potrebbe essere andata bene nel 2012, ma oggi non voglio provarla su Windows 10.
Alan,

19

La soluzione che uso è aprire il prompt dei comandi aprendo il menu Start, digitando 'cmd' e premendo Ctrl+ Shift+ Enter. Ciò causerà l'avvio del programma selezionato come amministratore.


1
Esiste un'alternativa che non richiede "ricerca"? (perché da quello che so scrivere cose nella casella effettivamente fa ricerche)
Pacerier

L'unico altro modo in cui conosco è la risposta di Luke, disabilitare l'UAC. La ricerca di cmd è piuttosto veloce, non riesce nemmeno a premere Ctrl + Maiusc + Invio prima di trovarlo.
Dracs,

Lo faccio sempre sui computer dei clienti. Trova CMD abbastanza dannatamente veloce
canadese Luke il

Questo lo caricherà come amministratore?
barlop

@barlop Sì, quel tasto di scelta rapida (Ctrl + Maiusc + Invio) avvierà il programma evidenziato nel menu Start come amministratore.
Dracs,

12

Per eseguire automaticamente CMDcome amministratore ogni volta che si fa semplicemente clic (senza dover fare clic con il pulsante destro del mouse o creare collegamenti aggiuntivi), esiste una soluzione semplice per questo:

  1. Nell'editor del registro , vai a:
    HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

    • Se non esiste una Layerscartella , dovrai crearne una e denominarla:
      fai clic con il pulsante destro del mouse sulla AppCompatFlagscartella seleziona NewKey
  2. Fare clic con il tasto destro Layers, selezionare NewString Value. Imposta il Nome del tuo nuovo valore di stringa sul percorso completo al CMD.EXEprompt dei comandi ( C:\Windows\System32\cmd.exe) (ad es. )

  3. Fare doppio clic sul nuovo valore di stringa per modificarlo e impostare "Dati valore" su RUNASADMIN.

Ho avuto lo stesso fastidio e questo ha funzionato per me.


11

Se vuoi che CMD.exe sia sempre eseguito come amministratore, aggiungi semplicemente il seguente codice reg al tuo registro:

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"

2
Questo ha funzionato per me su Windows 8.1. Ora ho appena premuto Windows-R, cmd, Invio. Funziona anche per aprire una finestra di comando da Esplora file tramite Shift-RightClick> Apri finestra di comando qui.
Troy Gizzi,

1
Se funziona, questa è la risposta corretta, nonostante la versione molto più lunga attualmente accettata.
Xodarap777,

Questo funziona anche per Windows 10. Metti il ​​contenuto nel blocco note, salvalo con un'estensione .reg ed
eseguilo

Non ha funzionato per me. La parte HKLM non si è nemmeno registrata, per qualche motivo. Dibattiti sul fatto che funzioni ancora: superuser.com/questions/961573/… , con alternative.
Ray Woodcock,

4

Ci sono stati un paio di strumenti che ho usato che erano altre soluzioni alternative (oltre a quanto menzionato da Jesse).

Quando è uscito Vista per la prima volta, Microsoft è uscito con un powerToy " elevato " che è stato abbastanza utile e ha fatto il lavoro e, credo, (non ho ancora testato) funziona per Windows 7. Rilascialo nel tuo ambiente di percorso e potresti correre "elevate iisreset" da un normale prompt dei comandi (o anche "elevate cmd" dall'inizio / corsa o crea un collegamento)


Ecco un link diretto al download.
ashleedawg,

4

Il modo più semplice per aggirare tutto il dolore di Controllo dell'account utente, ecc è quello di impostare una voce Pianificazione attività per eseguire cmd.exe utilizzando i privilegi più elevati. Non creare un evento Trigger per esso e assicurarsi che la casella di controllo Consenti attività da eseguire su richiesta sia selezionata nella scheda Impostazioni. Inoltre, nella scheda Impostazioni assicurarsi che il menu a discesa "Se l'attività è già in esecuzione, quindi si applica la seguente regola" sia impostato su Non avviare una nuova istanza.

Quindi creare un collegamento a questo sul desktop ed eseguirlo da lì, o tramite un tasto di scelta rapida o aggiungere il collegamento alla barra delle attività.

L'ho fatto sul mio sistema Windows 7 e funziona perfettamente.


1
Oops, ho dimenticato di specificare una cosa importante. Ecco il percorso target per il collegamento all'attività. C: \ Windows \ System32 \ schtasks.exe / run / TN "prompt dei comandi senza controllo dell'account utente". Il testo all'interno delle virgolette è come si chiama l'attività quando si crea l'attività.
Peter Wills,

non racchiudere il tuo ID e-mail nelle risposte
BlueBerry - Vignesh4303

2

Basta copiare e incollare cmd.exe e rinominarlo come "cmda.exe" nella cartella \ system32 \ (337 KB non è nemmeno un grosso problema ...). L'opzione "Esegui come amministratore" nelle proprietà di cmda.exe non verrà più disattivata e sarà possibile impostarla per essere sempre eseguita come amministratore. Ora avrai due comandi: il primo è regolare, il secondo ha un privilegio (a) dmin. Digitare "cmda" nella Winbarra di ricerca è facile come con "cmd"!

Per il cmd nel menu di scelta rapida con privilegio di amministratore, assicurarsi di disporre già di cmda.exe, aggiungerlo nel nuovo file .reg e avviarlo

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

Vedrai due stesse linee nel menu contestuale (shift); un prompt dei comandi non elevato e un altro con "(Amministratore)" aggiunto.

Questo è tutto...


1

Creare un collegamento a cmd.exe, fare clic con il tasto destro e selezionare Proprietà, nella scheda Collegamento selezionare Avanzate, selezionare Esegui come amministratore.


1

Penso che il modo più semplice per eseguire sempre cmd come admin sia creare il file .reg con il codice seguente:

Windows Registry Editor Version 5.00

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

Incollalo nel blocco note o qualcosa del genere e salvalo come file .reg. Nota: in questo modo il prompt dei comandi viene eseguito come amministratore per tutti gli utenti. Per eseguire sempre come amministratore solo il tuo utente, modifica HKEY_LOCAL_MACHINE in HKEY_CURRENT_USER


1

Tutto grazie a Jesse Brohinsky

Una versione più migliorata. Ciò include anche la directory in background che consente di aprire anche all'interno della cartella. Inoltre, per il gusto di farlo, puoi aprire il comando come non amministratore.

Inoltre è possibile disabilitare AdminApprovalMode. In questo modo non è necessario eseguire come amministratore quando si è amministratori. 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\""

0

L'unico altro modo, diverso da quello menzionato da Dracs, è disabilitare completamente l'UAC


0

Quanto segue funziona per me

@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"
:--------------------------------------

otterrai lo stesso prompt uac che conferma a runas admin .. l'ho trovato qualche tempo fa @ stackexchange

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.