web-dev-qa-db-fra.com

Exécutez en tant qu'administrateur de la ligne de commande sur Windows 8

J'essaie d'exécuter Notepad comme administrateur afin que je puisse modifier mon fichier d'hôtes de la ligne de commande.

J'ai essayé runas /user:(myusername)\administrator "notepad c:\windows\system32\drivers\etc\hosts" I Entrez ensuite mon mot de passe et je reçois

Erreur Runas: Impossible d'exécuter - Notepad C:\Windows\System32\Pilotes\etc\hosts 1327: Les restrictions de compte empêchent cet utilisateur de se connecter. Par exemple: les Swords vierges ne sont pas autorisés, les temps de connexion sont limités, ou une restriction de politique a été appliquée.

PS: Je sais si je donne la permission à mon compte d'utilisateur, je peux le modifier sans courir en tant qu'administrateur. Mais j'aimerais savoir comment faire cela sans avoir à modifier les autorisations dans le fichier d'hôtes.

11
Kirill Fuchs

OK, le raison Cela ne fonctionne pas est le modèle de sécurité de Windows Vista et plus récent. Un compte dans le groupe Administrateurs fonctionne toujours tout ce qui n'est pas explicitement élevé en tant qu'utilisateur limité. L'exception est le compte Administrator, qui fonctionne tout Élevé. Pour cette raison, il est généralement jugé mauvais d'utiliser comme compte de connexion et est normalement désactivé.

Vous pouvez l'activer puis runas pour appeler comme ce compte. Cela introduit quelques problèmes - maintenant, vous courez avec l'environnement d'un utilisateur différent, qui pourrait avoir des variables d'environnement différentes définies.1

Le meilleur moyen de le faire serait effectivement élever comme votre utilisateur actuel via UAC. Malheureusement, l'invite de commande standard n'inclut pas cette capacité - mais les programmes tiers et le PowerShell intégré et WSHell (VBScript) peuvent le faire.


Emprunter de mon autre réponse , vous pouvez invoquer la commande PowerShell directement avec powershell -c:

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

qui dit essentiellement PowerShell d'exécuter ce qui suit (start est aliasé à Start-Process):

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

Le truc ici passe le verbe runas, déclenchement de l'UAC.

Ni Start-Process -Verb runas ni la cmd _ standard runas _ passera le répertoire de travail actuel , donc utilisez toujours le chemin complet dans toutes les commandes que vous Élevez de cette manière.

Notez également que certains arguments comme -c peut affronter avec Start-Process arguments, de sorte que le moyen le plus sûr est:

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

1 Remarque: cela ne s'applique que sur le Utilisateur Variables d'environnement. Variables d'environnement que vous avez définies dans un processus parent ne sont pas transmises par UAC ! Cela s'applique également à runas, et c'est encore pire là car vous n'obtiendrez même pas les Vares de l'utilisateur corrects.

7
Bob

Très probablement, vous n'avez pas encore activé le compte administrateur.

Voici instructions pour permettre le compte de l'administrateur .

Vous trouverez également plus d'informations sur Runas sur le site Microsoft.

12
Nicole Hamilton