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.