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 Administrator
Konto, 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 runas
als 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
start
Dies 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 runas
und die Benutzerkontensteuerung auszulösen.
Weder Start-Process -Verb runas
die 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 -c
mit Start-Process
Argumenten 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.