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 Administrator
compte, 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' runas
invoquer 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 start
alias 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 runas
la cmd standard runas
ne 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 -c
peuvent entrer en conflit avec des Start-Process
arguments, 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.