Exécuter en tant qu'administrateur à partir de la ligne de commande sur Windows 8


11

J'essaie d'exécuter le Bloc-notes en tant qu'administrateur pour pouvoir modifier mon fichier d'hôtes à partir de la ligne de commande.

J'ai essayé runas /user:(myusername)\administrator "notepad c:\windows\system32\drivers\etc\hosts"j'ai ensuite entré mon mot de passe et j'obtiens

ERREUR RUNAS: impossible à exécuter - bloc-notes c: \ windows \ system32 \ drivers \ etc \ hosts 1327: les restrictions de compte empêchent cet utilisateur de se connecter. Par exemple: les épées de pa vierges ne sont pas autorisées, les temps de connexion sont limités, ou une restriction de politique a été appliquée.

PS: je sais que si je donne la permission à mon compte d'utilisateur, je peux le modifier sans exécuter en tant qu'administrateur. Mais j'aimerais savoir comment procéder sans avoir à modifier les autorisations sur le fichier hosts.

Réponses:


7

Ok, la raison pour laquelle cela ne fonctionne pas est le modèle de sécurité dans Windows Vista et plus récent. Un compte dans le groupe d'administrateurs exécute toujours tout ce qui n'est pas explicitement élevé en tant qu'utilisateur limité. L'exception est le Administratorcompte, qui exécute tout élevé. Pour cette raison, il est généralement considéré comme mauvais à utiliser comme compte de connexion et est normalement désactivé.

Vous pouvez l'activer, puis l' runasinvoquer en tant que compte. Cela introduit quelques problèmes - vous exécutez maintenant avec l'environnement d'un utilisateur différent, qui pourrait avoir des variables d'environnement différentes définies. 1

La meilleure façon de le faire serait en fait de devenir votre utilisateur actuel via UAC. Malheureusement, l'invite de commande standard n'inclut pas cette capacité - mais les programmes tiers et les PowerShell et WSHell (VBScript) intégrés peuvent le faire.


Empruntant à 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 (a un startalias Start-Process):

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

L'astuce consiste ici à passer le verbe runas, déclenchant l'UAC.

Ni Start-Process -Verb runasla cmd standard runasne transmettra le répertoire de travail actuel , utilisez donc toujours le chemin d'accès complet dans toutes les commandes que vous élevez de cette manière.

Notez également que certains arguments comme -cpeuvent entrer en conflit avec des Start-Processarguments, donc le moyen le plus sûr est:

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

1 Remarque: cela ne s'applique qu'aux variables d'environnement de l' utilisateur . Les variables d'environnement que vous définissez dans un processus parent ne sont pas transmises par UAC ! Cela s'applique également à runas, et c'est encore pire là-bas, car vous n'obtiendrez même pas les bons utilisateurs.


Cela n'a pas fonctionné pour moi avec les guillemets doubles.
Vince

@Ghodmode Pourriez-vous donner un exemple de la ligne que vous avez essayé d'exécuter? Si vous faites référence au dernier exemple, essayez de déplacer la première citation après -c. (donc -c "startau lieu de "-c start)
Bob

Notez que le processus Powershell ne doit pas être exécuté avec un niveau élevé pour exécuter un programme en tant qu'administrateur.
jiggunjer

Étrange qu'il fonctionnait avant une mise à jour de Windows 10 2019-03.
Qwerty


-1

Une chose que vous pouvez essayer est d'ouvrir l'invite de commande en tant qu'administrateur et d'exécuter le bloc-notes par là. Tapez simplement Notepad. Après avoir fait cela, vous pouvez cliquer sur le fichier, puis l'ouvrir et naviguer jusqu'au fichier hosts et l'ouvrir. Enfin, vous pouvez simplement enregistrer comme d'habitude.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.