UacConsole

Führt einzelne Befehle in der Windows-Eingabeaufforderung nach einer UAC-Bestätigung mit erhöhten Berechtigungen aus, ohne dass die ganze Eingabeaufforderung vorab als Administrator gestartet werden muss.

Das Problem

Mit Windows Vista hat Microsoft das Sicherheitskonzept in Windows dahingehend geändert, dass auch lokale Administratoren auf einem Rechner nicht mehr ständig alle Berechtigungen haben. Sollen administrative Tätigkeiten durchgeführt werden, müssen zuerst die Berechtigungen für den entsprechenden Prozess angehoben werden, was mit dem bekannten Dialog der Benutzerkontensteuerung (engl. User Account Control, UAC) bestätigt wird. Benutzer, die kein Administrator sind, müssen an dieser Stelle einen entsprechenden Benutzernamen mit Kennwort angeben.

Während diese Abfrage beim Starten von grafischen Anwendungen nicht weiter stört, ist der Aufruf von Konsolenprogrammen oder anderen Befehlen in der Eingabeaufforderung sehr umständlich. Die UAC-Abfrage steht innerhalb der Eingabeaufforderung nicht zur Verfügung. Stattdessen muss zuerst eine neue Eingabeaufforderung „Als Administrator“ gestartet werden, dann muss ggf. noch das Verzeichnis gewechselt werden und erst dann stehen die höheren Berechtigungen für den gewünschten Befehl zur Verfügung. Das stellt bei häufiger Nutzung eine echte Einschränkung dar und führt bei manchen Benutzern immer wieder zu neuer Frustration über Windows an sich.

Die Lösung

Hier kann man aber sehr gut von Unix/Linux lernen: Dort wird das Konzept der Trennung zwischen Benutzer und Administrator bereits sehr lange angewendet und die Werkzeuge sind entsprechend ausgereift. Dafür steht der sudo-Befehl zur Verfügung, mit dem sich in einem Terminal einzelne Befehle im normalen Arbeitsfluss als Administrator (root) oder unter einem anderen Benutzer ausführen lassen. Ohne ein neues Fenster zu öffnen und ohne das aktuelle Arbeitsverzeichnis zu verlassen.

UacConsole setzt dieses Prinzip auch für Windows um. Statt einer Kennwortabfrage wird die Windows-Benutzerkontensteuerung verwendet, die den entsprechenden Dialog anzeigt. Nach der Bestätigung wird der angegebene Befehl im aktuellen Verzeichnis und im selben Konsolenfenster mit erhöhten Berechtigungen gestartet. Alle Ein- und Ausgaben erfolgen normal im aktiven Fenster. So lässt sich z. B. auch eine neue Eingabeaufforderung starten, in der dann permanent höhere Rechte zur Verfügung stehen.

Ähnlich wie bei sudo kann die UAC-Bestätigung für einige Zeit zwischengespeichert werden, um den UAC-Dialog nicht für jeden einzelnen Befehl erneut bestätigen zu müssen. Dafür wird ein Serverprozess gestartet, der dann weitere Befehle annimmt und ausführt, und sich nach einer Weile Nichtbenutzung selbstständig wieder beendet.

Kompatibilität: .NET Ab Version 4.0 Windows 8 Windows 7 Windows XP 64 bit

Beispiel

Um einen Befehl mit erhöhten Berechtigungen auszuführen, muss ihm nur der Befehl uac vorangestellt werden. Dadurch wird UacConsole gestartet, das dann die notwendigen Schritte durchführt. Mit dem folgenden Aufruf wird das Verzeichnis AppDir im aktuellen Arbeitsverzeichnis erstellt:

uac md AppDir

Es können auch grafische Anwendungen auf diese Weise gestartet werden, wie etwa ein Texteditor, um eine geschützte Datei zu bearbeiten:

uac notepad File.txt

Um die Zwischenspeicherung der Berechtigung für einen Aufruf zu deaktivieren, muss die Option /single oder abgekürzt /s vorangestellt werden:

uac /s dir

Der Zeitraum der Zwischenspeicherung kann ebenfalls konfiguriert werden. Dafür wird die Option /idletimeout oder /it verwendet. Ohne weiteren Parameter wird die aktuelle Dauer angezeigt, die mit Angabe einer Zahl in Sekunden geändert werden kann. Vorgabe ist eine Dauer von 30 Sekunden. Diese Einstellung wird in der Registry unter HKLM\Software\Unclassified\UacConsole gespeichert.

uac /it
uac /it 300

Die vollständige Aufrufbeschreibung wird beim Start ohne Parameter oder mit /? oder /h angezeigt.

Download

Hinweis: Veröffentlichungen nach dem 9.1.2016 sind nicht mehr digital signiert, da keine kostenlosen Code-Signing-Zertifikate für Open-Source-Entwickler mehr angeboten werden. Ein kommerzielles Zertifikat ab 200 € pro Jahr lohnt sich hier nicht. Entschuldigung für die Verunsicherung beim nächsten Download.

UacConsole-Setup-1.0.exe557 KiBInstallationsprogramm

UacConsole-1.0.7z12,4 KiBProgrammdateien

Hinweise zur Verwendung

Wenn UacConsole nicht mit dem Installationsprogramm installiert wurde, müssen die beiden Programmdateien in ein Verzeichnis im Suchpfad kopiert werden, oder das Verzeichnis in den Suchpfad (%PATH%) aufgenommen werden, um einen unkomplizierten Aufruf zu ermöglichen. Beide Programmdateien müssen sich im selben Verzeichnis befinden. Das Installationsprogramm kopiert die Dateien ins Windows-Systemverzeichnis.

Lizenz und Nutzungsbedingungen

Dieses Programm ist „Freeware“. Das bedeutet, dass es für private sowie kommerzielle Nutzung kostenlos ist. Die weitere Verbreitung ist nicht ohne meine Genehmigung gestattet. Der Quelltext ist nicht verfügbar. Ich gebe keine Garantie, auch nicht auf Lauffähigkeit oder Benutzbarkeit. Die Nutzung erfolgt auf eigene Gefahr, ich hafte nicht für Schäden, die durch sachgemäßen oder unsachgemäßen Gebrauch dieses Programms entstehen.

Statistische Daten

  • Erstellt am 2013-04-07.
  • Ca. 530 Codezeilen, geschätzte Ent­wick­lungs­kos­ten: 530 - 2 100 €