Unter Windows 8 über die Befehlszeile als Administrator ausführen


11

Ich versuche, Notepad als Administrator auszuführen, damit ich meine Hosts-Datei über die Befehlszeile bearbeiten kann.

Ich habe versucht, runas /user:(myusername)\administrator "notepad c:\windows\system32\drivers\etc\hosts"dann mein Passwort einzugeben und ich bekomme

RUNAS ERROR: Kann nicht ausgeführt werden - Editor c: \ windows \ system32 \ drivers \ etc \ hosts 1327: Kontobeschränkungen verhindern, dass sich dieser Benutzer anmeldet. Beispiel: Leere Schlüsselwörter sind nicht zulässig, Anmeldezeiten sind begrenzt. oder eine Richtlinienbeschränkung wurde durchgesetzt.

PS: Ich weiß, wenn ich meinem Benutzerkonto die Erlaubnis gebe, kann ich es bearbeiten, ohne als Administrator ausgeführt zu werden. Aber ich möchte wissen, wie das geht, ohne die Berechtigungen für die Hosts-Datei ändern zu müssen.

Antworten:


7

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.


Bei den doppelten Anführungszeichen hat es bei mir nicht funktioniert.
Vince

@Ghodmode Können Sie ein Beispiel für die Zeile geben, die Sie ausgeführt haben? Wenn Sie sich auf das letzte Beispiel beziehen, verschieben Sie das erste Anführungszeichen nach das -c. (also -c "startstatt "-c start)
Bob

Beachten Sie, dass der Powershell-Prozess nicht erhöht ausgeführt werden muss, um ein Programm als Administrator auszuführen.
Jiggunjer

Seltsam, dass es vor einem Windows 10 2019-03-Update funktioniert hat.
Qwerty


-1

Sie können versuchen, die Eingabeaufforderung als Administrator zu öffnen und dort den Editor auszuführen. Geben Sie einfach ein Notepad. Nachdem Sie dies getan haben, können Sie auf Datei klicken, dann öffnen und zur Hosts-Datei navigieren und sie öffnen. Schließlich können Sie einfach wie gewohnt speichern.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.