2012-07-25 13:57:17 +0000 2012-07-25 13:57:17 +0000
106
106

Come posso sempre eseguire il prompt dei comandi come amministratore?

Come sviluppatore, ho spesso la necessità di aprire un prompt dei comandi per vari scopi. Per esempio, uso iisreset per riavviare il mio server web locale.

Di solito apro la finestra dei comandi in uno dei due modi:

  1. Premere Win, digitare “cmd” e premere Invio
  2. Mentre in Explorer, tenere premuto Shift e fare clic con il tasto destro su una cartella, e scegliere “Aprire la finestra di comando qui”

Tuttavia, quando apro la finestra di comando in uno di questi modi, non ho i privilegi di amministratore completi a cui sento di avere diritto.

Per eseguire applicazioni per soli amministratori, devo aprire la riga di comando in questo modo relativamente laborioso:

  1. Premere Win, digitare “cmd”
  2. Attendere che il menu si riempia
  3. Sollevare la mano dalla tastiera e metterla sul mouse
  4. Clicca con il tasto destro del mouse sulla voce di menu “cmd.exe”
  5. Scegliere “Esegui come amministratore”

Questo è inaccettabile per diverse ragioni:

  • La finestra si apre sempre in C:\windows\system32, piuttosto che nella mia directory Users (come nella tecnica approvata 1) o nella cartella che voglio (come nella tecnica approvata 2). Quindi spesso devo cambiare directory per arrivare dove voglio andare.
  • Questo processo è diversi millisecondi più lento di entrambi i miei metodi preferiti. Eseguito più volte al giorno, ogni giorno per il resto della mia carriera, aggiunge circa dieci giorni di tempo perso a cliccare, aspettare e cambiare directory.
  • Come programmatore, eseguire un inutile compito robotico mi causa un grande dolore emotivo.
  • Come programmatore, sollevare la mano è un compito faticoso che mi causa grande dolore fisico.

Ecco perché sto cercando una soluzione one-and-done che permetta alle tecniche approvate 1 & 2 di aprire i prompt dei comandi dell'amministratore.

Molti programmi vi permettono di cambiare permanentemente il loro livello di privilegio predefinito dal menu Proprietà. Il prompt dei comandi non è uno di questi programmi.

**Come faccio a far funzionare la finestra dei comandi come amministratore di default (anche quando uso l'opzione del menu contestuale “Apri finestra dei comandi qui”)?

Risposte (13)

88
88
88
2012-07-25 14:12:02 +0000

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

Per rispondere alla seconda parte della tua domanda, incolla il seguente nel blocco note e salvalo con un'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\""

Poi esegui il file. Questo fonderà le modifiche nel registro e aggiungerà l'opzione ai vostri menu contestuali. (Non è necessario il tasto shift).

38
38
38
2012-07-25 14:56:43 +0000

Molti programmi ti permettono di cambiare permanentemente il loro livello di privilegio predefinito dal menu Proprietà. Il prompt dei comandi non è uno di questi programmi.

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

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

Per impostare i privilegi di amministratore per gli eseguibili di Windows, è necessario creare un collegamento e usare la scheda ScorciatoiaAdvanced (la voce prompt dei comandi nel menu Start è già un collegamento):

La finestra si apre sempre in C:-windows\system32, piuttosto che nella mia directory Utenti (come nella tecnica approvata 1) o nella cartella in cui voglio stare (come nella tecnica approvata 2). Quindi spesso devo cambiare directory per arrivare dove voglio andare.

Questo è normale e ha senso, dato che se stai aprendo un prompt di comandi admin, probabilmente stai facendo delle azioni di sistema per le quali hai bisogno dei privilegi di amministratore, invece di azioni utente per le quali hai già i permessi comunque.

Puoi impostare la directory predefinita globalmente aggiungendo/modificando la voce di registro Autorun (non deve nemmeno essere una stringa espandibile per usare le variabili d'ambiente):

Ora, ogni volta che aprite un prompt di comandi usando qualsiasi metodo sarà automaticamente predefinito (beh, tecnicamente cambia-directory) alla vostra directory del profilo utente.

Ancora meglio, potete aggiungere altri comandi da eseguire automaticamente ogni volta che aprite un prompt dei comandi usando l'operatore & (per esempio, cd /d %userprofile% & cls & dir). Inoltre, potete impostare lo stesso valore nella stessa chiave sotto il ramo HKLM per impostarlo per tutti gli utenti.

Notate che dovrete ancora accettare la richiesta di UAC. Sfortunatamente non c'è (attualmente?) un modo per creare una “whitelist” UAC di programmi fidati in modo che il prompt dei comandi possa essere eseguito come amministratore senza dover accettare il prompt. Questo vi lascia con (a) poche opzioni.

Nel primo caso, si evita del tutto l'UAC mentre negli ultimi due, si inseriscono le credenziali solo una volta quando si crea il collegamento.

20
20
20
2011-11-13 07:15:41 +0000

La soluzione che uso è aprire il prompt dei comandi aprendo il menu start, digitando ‘cmd’ e premendo Ctrl+Shift+Enter. Questo farà sì che il programma selezionato venga lanciato come amministratore.

12
12
12
2013-03-10 22:08:33 +0000

Per eseguire automaticamente CMD come amministratore ogni volta che viene semplicemente cliccato (senza dover cliccare con il tasto destro o creare ulteriori scorciatoie), c'è una facile soluzione per questo:

  1. Nel Registry Editor , navigare verso:
    HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

  2. Cliccate con il tasto destro del mouse su Layers, selezionate NewString Value. Imposta il Nome del tuo nuovo valore di stringa al percorso completo del prompt dei comandi (CMD.EXE) (cioè C:\Windows\System32\cmd.exe)

  3. Fate doppio clic sul nuovo valore di stringa per modificarlo e impostate il “Value data” a RUNASADMIN.

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

11
11
11
2014-01-04 17:10:28 +0000

Se volete che CMD.exe sia sempre eseguito come amministratore, basta aggiungere il seguente codice reg al vostro 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"
4
4
4
2012-07-25 14:31:14 +0000

Ci sono stati un paio di strumenti che ho usato che erano altri workaround (oltre a quelli menzionati da Jesse).

Quando Vista uscì per la prima volta, Microsoft uscì con un powerToy elevate “ che era abbastanza utile e faceva il lavoro e ancora, credo (non ho testato) funziona per Windows 7. Inseritelo nel vostro ambiente di percorso e potreste eseguire "elevate iisreset” da un normale prompt dei comandi (o anche “elevate cmd” da start/run o creare un collegamento)

4
4
4
2013-09-25 01:03:59 +0000

Il modo più semplice per bypassare tutto il dolore di UAC ecc. è quello di impostare una voce Task Schedule per eseguire cmd.exe usando i privilegi più alti. Non create un evento Trigger per esso e assicuratevi che la casella di controllo Allow Task To Be Run On Demand sia selezionata nella scheda Settings. Sempre nella scheda Impostazioni assicurati che il menu a tendina “If The Task Is Already Running, Then The Following Rule Applies” sia impostato su Do Not Start A New Instance.

Poi crea un collegamento a questo sul tuo desktop ed eseguilo da lì, o tramite un tasto di scelta rapida o appunta il collegamento alla barra delle applicazioni.

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

2
2
2
2013-09-23 10:28:31 +0000

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 sarà più grigia e potrai impostarla per eseguirla sempre come amministratore. Ora avrete due prompt di comandi: il primo è regolare, il secondo ha un privilegio (a)dmin. È facile digitare “cmda” nella barra di ricerca di Win come si fa con “cmd”!

Per il cmd nel menu contestuale con privilegio di amministratore, assicuratevi di avere già cmda.exe, aggiungetelo in un nuovo file .reg e lanciatelo

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

Vedrete due righe uguali nel menu contestuale (shift); un prompt di comandi non elevato e un altro con “(Administrator)” aggiunto.

Questo è tutto…

1
1
1
2013-12-15 03:45:32 +0000

Penso che il modo più semplice per eseguire sempre cmd come amministratore sia fare il file .reg con il codice qui sotto:

Windows Registry Editor Version 5.00

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

Incolla questo in notepad o qualcosa del genere e salva come file .reg. Nota: questo fa sì che il prompt dei comandi venga eseguito come amministratore per tutti gli utenti. Per eseguire sempre e solo come amministratore sul vostro utente basta cambiare HKEY_LOCAL_MACHINE in HKEY_CURRENT_USER

1
1
1
2012-07-25 16:59:21 +0000

Crea un collegamento a cmd.exe, fai clic con il tasto destro e seleziona proprietà, nella scheda Collegamento seleziona Avanzate, controlla Esegui come amministratore.

1
1
1
2015-01-15 09:26:51 +0000

Tutto grazie a Jesse Brohinsky

Una versione migliorata. Questa include anche la directory di sfondo che permette di aprirecmd anche da dentro la cartella. Inoltre per il gusto di farlo si può aprire il commandpromt come non admin.

Inoltre potete disabilitare AdminApprovalMode. In questo modo non è necessario eseguire come admin quando si è admin 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
0
0
2014-09-23 08:41:15 +0000

Il seguente 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"
:--------------------------------------

si otterrà lo stesso prompt uac confermando di eseguire come amministratore… trovato qualche tempo fa @ stackexchange

0
0
0
2011-11-13 08:30:56 +0000

L'unico altro modo, oltre a quello menzionato da Dracs, è disabilitare completamente UAC