
Beim Versuch, mit Runas die Berechtigungen zu erhöhen, entgeht mir etwas. Einfache Win10-Maschine mit einem einzelnen Benutzer, der bereits über Administratorrechte verfügt. Ich muss per Skript einen bestimmten Registrierungsschlüssel eingeben, erhalte jedoch die Meldung „Zugriff verweigert“, wenn ich es direkt mit dem Befehl reg versuche.
> reg ...
ERROR: Access is denied.
Wenn ich es versuche:
> runas /user:Administrator Command
Enter the password for Administrator:
1326: The user name or password is incorrect.
Es lehnt mein Benutzerkennwort ab. Ich glaube nicht, dass es auf einem lokalen Computer ein spezielles Administratorkennwort gibt, oder? Es gibt kein anderes Konto. Versuch:
> runas /user:MyUser Command
Enter the password for MyUser:
740: The requested operation requires elevation
Wie erhöhe ich also die Berechtigungen über die Befehlszeile?!? Warum kann ich hier nicht sehen, dass ich Administratorrechte habe:
>runas /showtrustlevels
The following trust levels are available on your system:
0x20000 (Basic User)
EDIT: Vielleicht sollte ich deutlicher sagen, was ich tun möchte. Von einem C-Programm aus möchte ich eine Änderung an WT_KEY_HKLM, „Software\Microsoft\Windows\CurrentVersion\Run“, vornehmen. Ich könnte dies direkt in XP tun, aber in neueren Windows-Versionen hat es keine Wirkung. Und tatsächlich wird der Zugriff verweigert, wenn man „reg“ auf diesem Schlüssel von der Befehlszeile aus ausführt. Ich möchte mein Programm nicht mit erhöhten Rechten ausführen, also war meine Idee, etwas wie system(„runas reg ...“) zu tun, wo es nach dem Passwort fragt und die Registrierungsänderung vornimmt. Aber ich kann den Befehl nicht einmal von der Befehlszeile aus zum Laufen bringen. Vielleicht kann jemand den richtigen Weg dafür vorschlagen?
Antwort1
Ersetzen Sie [Benutzer] und [Befehl] durch das, was Sie verwenden möchten, und probieren Sie Folgendes aus:
powershell.exe -ExecutionPolicy Bypass -command "& {Start-Process powershell.exe -Credential '[user]' -ArgumentList 'Start-Process ""[command]"" -Verb runAs'}"
Vorteile:
- Es kann in einer Eingabeaufforderung ohne erhöhte Rechte, im Ausführen-Fenster und in Windows-Verknüpfungen verwendet werden
- Es erhöht nur den Befehl. Die Erhöhung erfolgt als Teil der Ausführung des Befehls, nicht als Ausführung der PowerShell-Fenster.
Nachteile:
- Sie werden immer zur Anmeldung aufgefordert (es gibt keine Möglichkeit, Anmeldeinformationen zu speichern, wie dies mit runas möglich ist). – Dies könnte ein Vorteil sein.
- Wenn UAC aktiviert ist, wird eine UAC-Eingabeaufforderung angezeigt. Dies lässt sich bei erhöhten Rechten mit UAC nicht vermeiden.
- Es öffnet (und schließt) 2 PowerShell-Fenster, während die Anmeldeinformationen und die Erhöhung verarbeitet werden
- Anführungszeichen im Befehl sind problematisch (oder werden zumindest SCHNELL kompliziert). Sie sollten jeden Befehl, der Anführungszeichen benötigt, in eine Batchdatei einfügen und die Batchdatei als Befehl ausführen.
Wenn Sie diesen Befehl von einer PowerShell-Eingabeaufforderung aus ausführen möchten, können Sie ihn folgendermaßen abkürzen:
Start-Process powershell.exe -Credential '[user]' -ArgumentList 'Start-Process ""[command]"" -Verb runAs`'
S.
Antwort2
Standardmäßig ist das Administratorkonto gesperrt, damit es nicht von anderen missbraucht werden kann. Wenn Sie versucht haben, für den Befehl „runas /user:Administrator“ ein leeres Passwort zu verwenden, können Sie sehen, dass das Konto gesperrt ist.
Wenn Ihr Benutzer bereits über Administratorrechte verfügt, sollten Sie auf den Befehl „reg“ zugreifen können. Auf meinem Computer ist das möglich.
Leider können Sie „runas“ nicht verwenden, um auf einen Befehl mit erhöhten Rechten zuzugreifen. Sie müssen dies über eine Eingabeaufforderung mit erhöhten Rechten tun. Diese kann entweder mit dem Befehl „runas“ erstellt werden (was in Ihrem Fall nicht funktioniert) oder indem Sie mit der rechten Maustaste auf „cmd.exe“ klicken und „Als Administrator ausführen“ auswählen.
Antwort3
Sie können die Befehlszeile als Administrator ausführen, indem Sie mit der rechten Maustaste auf das Befehlszeilensymbol oder cmd.exe klicken und die Ausführung als Administrator auswählen. Auf diese Weise befinden Sie sich in einer Eingabeaufforderung mit erhöhten Rechten und sollten das beschriebene Problem nicht haben. Außerdem müssen Sie beim Eingeben der Befehle nicht „runas“ verwenden.