Esegui come amministratore dalla riga di comando su Windows 8


11

Sto cercando di eseguire Blocco note come amministratore in modo da poter modificare il mio file hosts dalla riga di comando.

Ho provato a runas /user:(myusername)\administrator "notepad c:\windows\system32\drivers\etc\hosts"inserire la mia password e ottengo

ERRORE RUNAS: impossibile eseguire - blocco note c: \ windows \ system32 \ drivers \ etc \ hosts 1327: le restrizioni dell'account impediscono a questo utente di accedere. Ad esempio: le password vuote non sono consentite, i tempi di accesso sono limitati, oppure è stata applicata una limitazione della politica.

PS: so che se autorizzo il mio account utente, posso modificarlo senza eseguirlo come amministratore. Ma vorrei sapere come farlo senza dover modificare le autorizzazioni sul file hosts.

Risposte:


7

Ok, la ragione per cui questo non funziona è il modello di sicurezza in Windows Vista e versioni successive. Un account nel gruppo amministratori esegue comunque tutto ciò che non è esplicitamente elevato come utente limitato. L'eccezione è l' Administratoraccount, che esegue tutto elevato. Per questo motivo, è considerato generalmente errato utilizzare come account di accesso ed è normalmente disabilitato.

È possibile abilitarlo e quindi runasinvocare come tale account. Ciò introduce alcuni problemi: ora stai funzionando con l'ambiente di un altro utente, che potrebbe avere diverse variabili d'ambiente impostate. 1

Il modo migliore per farlo sarebbe effettivamente elevare come utente corrente tramite UAC. Sfortunatamente, il prompt dei comandi standard non include questa funzionalità, ma sia i programmi di terze parti che PowerShell e WSHell (VBScript) integrati possono farlo.


Prendendo in prestito dall'altra mia risposta , puoi invocare il comando PowerShell direttamente con powershell -c:

powershell -c start -verb runas notepad C:\Windows\System32\drivers\etc\hosts

che sostanzialmente dice a PowerShell di eseguire quanto segue ( startè alias Start-Process):

Start-Process -Verb "runas" notepad C:\Windows\System32\drivers\etc\hosts

Il trucco qui è passare il verbo runas, innescando UAC.

Start-Process -Verb runasil cmd standard runaspasserà la directory di lavoro corrente , quindi usa sempre il percorso completo in tutti i comandi che elevi in ​​questo modo.

Si noti inoltre che alcuni argomenti come -cpotrebbero essere in conflitto con Start-Processargomenti, quindi il modo più sicuro è:

powershell "-c start -verb runas commandname -argumentlist 'arg1 arg2'"

1 Nota: questo vale solo per le variabili d'ambiente dell'utente . Le variabili d'ambiente impostate in un processo parent non vengono trasmesse da UAC ! Questo vale anche per runas, ed è anche peggio lì perché non otterrai nemmeno i vars dell'utente corretto.


Non ha funzionato per me con le doppie virgolette.
Vince il

@Ghodmode Potresti dare un esempio della linea che hai provato a eseguire? Se ti riferisci all'ultimo esempio, prova a spostare la prima citazione dopo il -c. (quindi -c "startinvece di "-c start)
Bob

Si noti che non è necessario eseguire il processo PowerShell elevato per eseguire un programma come amministratore.
jiggunjer,

Strano che funzionasse prima di un aggiornamento di Windows 10 2019-03.
Qwerty,


-1

Una cosa che potresti provare è aprire il prompt dei comandi come amministratore ed eseguire il blocco note da lì. Basta digitare Notepad. Dopo averlo fatto da lì, puoi fare clic su file, quindi aprire e navigare al file hosts e aprirlo. Infine, puoi semplicemente salvare come al solito.

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.