Sudo für Windows Vista: sudo.cmd

Windows Vista verfügt bekanntlich über die Benutzerkontensteuerung („User Account Control“).
Mit aktivierter UAC starten Prozesse immer mit eingeschränkten Rechten. Will man nun einen Prozess mit erhöhten Rechten starten kann man z.B. die rechte Maustaste drücken und „Als Administrator ausführen“ anklicken.
Für Programme mit grafischer Oberfläche ist dies recht praktikabel – wenn man so wie ich viel auf der Kommandozeile herumfuhrwerkt weniger. Da wünscht man sich doch sehr einen Befehl wie den sudo Befehl den – so hört man – andere Betriebssysteme schon länger haben. (Doch zur Ehrenrettung von Windows Vista: Bei diesen anderen Betriebssystemen ist man auch stärker auf die Kommandozeile angewiesen…)

Nachdem ich mit dem auf Vistablog.at vorgestellten start++ aus verschiedenen Gründen nicht zufrieden bin, und es wieder deinstalliert habe, wollte ich mir selbst einen einfachen sudo Befehl stricken.

Hier ist mein vierzeiliges Batchscript sudo.cmd:

@echo Set objShell = CreateObject(„Shell.Application“) > %temp%\\sudo.tmp.vbs
@echo args = Right(„%*“, (Len(„%*“) – Len(„%1“))) >> %temp%\\sudo.tmp.vbs
@echo objShell.ShellExecute „%1“, args, „“, „runas“ >> %temp%\\sudo.tmp.vbs
@cscript %temp%\\sudo.tmp.vbs

Im Gegensatz zu Linux können Befehle mit niedrigen und Befehle mit erhöhten Rechten aber nicht in der selben Commandshell (im selben Fenster) laufen.

Ein Aufruf von sudo ipconfig /renew führt also dazu, dass sich ein neues Fenster öffnet, dieses sich aber gleich wieder schließt.

Man muss daher beachten, dass man bei bestimmten Befehlen, wo die Ausgabe stehen bleiben soll noch cmd /k dazwischenhängt.

Hier ein paar Beispiele:

sudo cmd

Öffnet eine Kommandozeile mit erhöhten Rechten

sudo ping -t 192.168.1.1

Öffnet eine Kommandozeile mit dem Ping Befehl. Weil „-t“ angegeben ist schließt sich das Fenster erst, wenn man mit Strg-C abbricht. – Dabei verpasst man aber die Zusammenfassung am Ende des Ping Befehls…

sudo cmd /k ipconfig /renew
sudo cmd /k  ping 192.168.1.1

Will man also verhindern, dass sich das Fenster schließt, muss man cmd /k dazwischen hängen.

sudo iexplore

Für Befehle mit grafischer Oberfläche kann man sudo natürlich auch verwenden.

sudo regedit

Bei Befehlen mit grafischer Oberfläche, die ohnedies nur mit erhöhten Rechten laufen würden, kann man sich Sudo übrigens ersparen! – Regedit würde von sich aus einen UAC Prompt provozieren.
Dies gilt aber nicht für Kommandozeilenprogramme!
So führt z.B. ipconfig -flushdns ohne erhöhte Rechte zu der Fehlermeldung „Der angeforderte Vorgang erfordert erhöhte Rechte.“

sudo cmd /k ipconfig -flushdns

So geht’s richtig!

Ein Tipp zum Abschluss: Tastenkombination ALT+F nicht vergessen – dann kann man beim Abnicken des UAC Prompts noch mal Zeit sparen und braucht nicht zur Maus zu greifen!

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s