Neno Lojes Vista-Tagebuch

Tag 24: Anwendungen "UAC-fähig" machen (UAC – Teil 4)

Eine "UAC-fähige" Anwendung ist eine Anwendung, die klar markiert für welche Funktionen man Administrator sein muss und welche Funktionen allen zur Verfügung stehen. Die Systemsteuerung von Windows ist hier ein gutes Beispiel. Früher (vor Vista) waren in den Einstellungsdialogen die Dinge bunt gemischt, die ein regulärer Benutzer und die ein Administrator einstellen konnte. Heute wird das klar und sauber getrennt.

Jeder darf in die Eigenschaften vom System reingucken, aber die meisten Änderungen erfordern Adminrechte. Diese werden durch das einheitliche Schildsymbol gekennzeichnet.

Schritt 1: Identifizieren Sie, welche Funktionalität mehr als die regulären Benutzerrechte benötigt und markieren Sie diese mit einem Schildsymbol

Häufig sind es Windows APIs oder Zugriffe auf Systemordner wie C:\Programme oder Schreibzugriffe in den HKEY_LOCAL_MACHINE-Zweig der Registry.

Das Schildsymbol erhalten Sie in Windows Forms über SystemIcons.Shield ( ab.NET Framework 2.0 SP1/3.0 SP1/3.5), in WPF oder direkt über das Windows API mit C# (beliebige .NET Framework-Version).

Schritt 2: Teilen Sie Ihre Anwendung so auf, dass die administrativen Teile als separater Windowsprozess gestartet werden können

User Account Control kann keinen laufenden Prozess hoch oder herunterstufen, sondern nur beim Erstellen eines neuen Prozesses durch Einwilligung des Benutzers die administrativen Privilegien erteilen. Für die Aufteilung der Anwendung gibt es drei Strategien:

Am einfachsten startet die Haupt-EXE-Datei, die im Kontext eines normalen Benutzers läuft, eine zweite EXE, die administrative Berechtigungen benötigt ("Admin Broker Model ").

Sofern Sie einen Windows-Dienst mit installieren, kann auch dieser als Mittelsmann fungieren ("Backend-Service Model").

Sie lagern die Funktionen, die administrative Berechtigungen benötigen, in eine Out-of-Process-COM-Komponente aus.

Der Aufwand für beide Schritte ist sicherlich sehr stark von Ihrer Anwendungsarchitektur und eventuellen Altlasten abhängig. Er reicht von wenigen Minuten bis tagelangem Forschen.

Morgen stelle ich mir die Frage, warum sich die UAC-Abfragen eigentlich von Programm zu Programm unterschieden und wie die Herstellerinformation mit Hilfe von Code-Signing-Zertifikaten in die ausführbaren Dateien schreibt.

Bis dahin wünsche ich noch einen schönen Tag,
Ihr Neno Loje

P.S. Übrigens: Das UAC-Schild-Symbol sieht immer gleich aus und kennt auch nur den einen Zustand, d.h. es gibt kein "ausgegraut", "eingedrückt" oder ähnliches…

Neno Loje
Freier Berater & Fachautor
Sie haben Fragen zu Visual Studio Team System (VSTS) oder Anregungen und Kommentare zu meinem Vista-Tagebuch? Dann freue ich mich auf Ihre Nachricht.

* *
* *