Ok, der Grund , warum dies nicht funktioniert, ist das Sicherheitsmodell in Windows Vista und höher. Ein Konto in der Administratorgruppe führt weiterhin alles aus, was nicht explizit als eingeschränkter Benutzer erhöht ist. Die Ausnahme ist das AdministratorKonto, auf dem alles erhöht ausgeführt wird. Aus diesem Grund wird die Verwendung als Anmeldekonto im Allgemeinen als schlecht angesehen und normalerweise deaktiviert.
Sie können es aktivieren und dann runasals dieses Konto aufrufen. Dies führt zu einigen Problemen: Jetzt arbeiten Sie mit der Umgebung eines anderen Benutzers, für den möglicherweise unterschiedliche Umgebungsvariablen festgelegt wurden. 1
Der bessere Weg, dies zu tun, wäre, sich als Ihr aktueller Benutzer über die Benutzerkontensteuerung zu erheben. Leider enthält die Standard-Eingabeaufforderung diese Funktion nicht - aber sowohl Programme von Drittanbietern als auch die integrierte PowerShell und WSHell (VBScript) können dies.
In Anlehnung an meine andere Antwort können Sie den PowerShell-Befehl direkt aufrufen mit powershell -c:
powershell -c start -verb runas notepad C:\Windows\System32\drivers\etc\hosts
startDies weist PowerShell grundsätzlich an, Folgendes auszuführen ( mit einem Alias versehen Start-Process):
Start-Process -Verb "runas" notepad C:\Windows\System32\drivers\etc\hosts
Der Trick hier besteht darin, das Verb zu übergeben runasund die Benutzerkontensteuerung auszulösen.
Weder Start-Process -Verb runasdie Standard-Cmd noch das Standard-Cmd runasübergeben das aktuelle Arbeitsverzeichnis. Verwenden Sie daher immer den vollständigen Pfad in allen Befehlen, die Sie auf diese Weise erhöhen.
Beachten Sie auch, dass einige Argumente wie -cmit Start-ProcessArgumenten kollidieren können. Der sicherste Weg ist also:
powershell "-c start -verb runas commandname -argumentlist 'arg1 arg2'"
1 Hinweis: Dies gilt nur für die Umgebungsvariablen des Benutzers . Umgebungsvariablen, die Sie in einem übergeordneten Prozess festgelegt haben, werden von der Benutzerkontensteuerung nicht weitergegeben ! Dies gilt auch für runas, und es ist dort noch schlimmer, weil Sie nicht einmal die richtigen Vars des Benutzers erhalten.