Bis einschließlich Windows XP arbeiten die meisten Anwender mit Administratorrechten. Damit dürfen sie alles machen, ebenso haben die ausgeführten Programme alle Rechte. Leider zählen dazu auch Würmer und Viren, so dass Microsoft mit dem kommenden Vista einige einschneidende Änderungen beschlossen hat. Dank der neuen Benutzerkontensteuerung laufen alle Programme grundsätzlich mit eingeschränkten Rechten. Mit den eingeschränkten Rechten ist der Schreibzugriff auf wichtige Verzeichnisse (Programmverzeichnis, Windows-Verzeichnis und Systemhauptverzeichnis) nicht mehr möglich, ebenso darf in der Registry nicht mehr in den HKML-Zweig geschrieben werden. Es ist zwar möglich, ein Programm über das Kontextmenü gezielt als Administrator zu starten, hier muss aber jeder Start zusätzlich bestätigt werden.
Für viele Entwickler dürfte sich die Benutzerkontensteuerung aber zu einer großen Herausforderung entwickeln. Ein Dateimanager sollte schon den Zugriff auf alle Verzeichnisse ermöglichen, ebenso darf ein Komprimierungsprogramm nicht daran scheitern, Dateien in das Programmverzeichnis zu entpacken. Das gilt natürlich auch für alle Anbieter von Hilfsbibliotheken für die Archivbehandlung, da diese in der Regel den eigentlichen Dateizugriff vornehmen. Auch das Ändern von Dateiverknüpfungen ist mit eingeschränkten Rechten nicht mehr möglich, da diese zwar im HKCR-Zweig gespeichert werden, der HKCR-Zweig aber eigentlich nur ein Unterzweig von HKLM ist. Das gleiche gilt auch für alle COM-Registrierungen.
In der Beta 2 hat mich die Benutzerkontensteuerung noch arg gestört, in der RC1 haben die nötigen Bestätigungsmeldungen aber stark abgenommen. Letztlich liegt es wohl an den Entwicklern selbst, die Anzahl der Meldungen durch ein durchdachtes Design auf ein nötiges Maß zu reduzieren. Mittlerweile muss ich sogar eingestehen, dass das Konzept durchaus seine Vorzüge hat.
Die Dokumentation für Entwickler ist allerdings mehr als spärlich. Es gibt zwar einige zum Teil recht umfangreiche Beschreibungen von Microsoft, die aber größtenteils nur das Konzept erklären. Hinweise zur technischen Implementierung findet man dagegen kaum, Beispielprogramme überhaupt nicht. Es bleibt einem derzeit also nichts anderes übrig, als sich selbst mühsam durch den Dschungel zu kämpfen.
SpeedCommander 11 läuft unter XP problemlos mit eingeschränkten Rechten. Bei Zugriffen auf den HLKM-Zweig der Registry, der z.B. beim Ändern der Dateizuordnungen oder bei der Registrierung von AddIns nötig ist, erscheint ein Anmeldedialog, mit dem man sich aus dem Programm heraus für die jeweilige Funktion kurz Administratorrechte verschaffen kann. Nach dem Verlassen der Funktion sind die erhöhten Rechte wieder weg. Unter Vista hilft dieses Verfahren aber nicht, da auch der normale Administratoraccount lediglich ein eingeschränkter Account ist und keine Rechte hat, auf den HKLM-Zweig der Registry zuzugreifen.
Das Konzept selbst ist aber das gleiche. Anstelle des Anmeldedialogs lässt sich unter Vista die Meldung der Benutzerkontensteuerung einblenden. Hier muss lediglich die Fortsetzen-Schaltfläche geklickt werden, die Eingabe des Administratorkennworts entfällt. Die eigentliche Änderung liegt aber darin, dass sich der Programmcode zum Schreiben in die Registry nicht in der Anwendung selbst befinden darf. Es ist zwingend erforderlich, diesen in eine zusätzliche Programmdatei (.EXE) oder in ein COM-Modul auszulagern.
Damit habe ich nun angefangen, allerdings wird erst der SpeedCommander 12 vollständig LUA-kompatibel sein. Der Hauptgrund liegt darin, dass fast jede Dateifunktion abgeklopft werden muss. Das fängt beim normalen Kopieren an und geht über FTP bis hin zu den Komprimierern, bei denen ich wohl den größten Aufwand erwarte. Das Kopieren selbst funktioniert bereits, hier schon einmal einige Screenshots.
Kopieren einer Datei in das Systemhauptverzeichnis:

Meldung der Benutzerkontensteuerung:

Kopierte Datei:

Damit der Arbeitsfluss nicht ständig durch die Benutzerkontensteuerung gestört wird, ist die Meldung nur beim allerersten Zugriff auf ein geschütztes Verzeichnis zu sehen. Alle weiteren Zugriffe (auch auf andere Verzeichnisse) laufen dann ohne Störungsmeldung ab.