Neno Lojes Vista-Tagebuch

Tag 22: Kompatibilität ist alles (UAC Teil 2)

Windows Vista besitzt eine Reihe von Kompatibilitätsmechanismen, die Software, die eigentlich nicht optimal geschrieben ist , trotzdem korrekt ausführt.

Werden Schreibzugriffe auf C:\Programme gemacht, wo man als Otto Normalbenutzer gar nicht reinschreiben darf, müsste Vista den Schreibzugriff eigentlich unterbinden: mit schlimmen Folgen für die laufende Anwendung (Absturz!). Stattdessen leitet Vista diese Schreibzugriffe um in einen so genannten "Virtual Store", der letztlich nur ein benutzerbezogener Ordner an einer anderen Stelle ist.

Liest die Software zu einem späteren Zeitpunkt aus dem Programme-Ordner, wird erstmal geguckt, ob im Virtual Store diese Datei bereits vorliegt und ggf. zurückgegeben.

Diese so genannte Virtualisierung findet auch in der Windows Registry statt. Dort werden Zugriffe auf HKEY_LOCAL_MACHINE\Software, der für alle Benutzer gilt, umgeleitet nach HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE\Software.

Was wird alles virtualisiert?

Dateisystem

Ordner:

%SYSTEMROOT%

%PROGRAMDATA%

%PROGRAMFILES%

Umgeleitet nach: %LOCALAPPDATA%\VirtualStore

Ausgenommen ausführbare Dateien: .exe, .dll, .sys

Windows-Registry

Schlüssel: HKEY_LOCAL_MACHINE\SOFTWARE

Umgeleitet nach:HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE\SOFTWARE\

Ausgenommene Schlüssel:

HKEY_LOCAL_MACHINE\Software\Classes

HKEY_LOCAL_MACHINE \Software\Microsoft\Windows

HKEY_LOCAL_MACHINE \Software\Microsoft\Windows NT

Der augenblickliche Mehrwert für den Benutzer: Das Programm läuft trotz verbotener Schreibzugriffe weiter.

Der Nachteil: Das geschriebene stand früher allen Benutzern zur Verfügung – jetzt sieht es nur so aus als ob. Das kann z.T. fatale Folgen haben, wenn zwei Benutzer annehmen, an derselben Datei zu arbeiten.

Ebenso besteht die Gefahr, dass ein Administrator tatsächlich Änderungen an den selben Dateien unter %ProgramFiles% vornimmt, diese aber von den Benutzern nicht gesehen werden, da die Dateien im Virtual Store immer Vorrang haben.

Weiterhin wird diese Virtualisierung nur für "ältere“ Programme – als Kompatibilitätsunterstützung – durchgeführt. Applikationen, die über ein UAC-Manifest (vgl. Beitrag von gestern) verfügen oder für 64-bit geschrieben wurden, werden davon grundsätzlich ausgenommen.

Fügen Sie also irgendwann mal ein UAC-Manifest Ihrer Datei hinzu, wird der Schreibzugriff dann "knallen" und das Programm eine Ausnahme a la "Zugriff verweigert" auslösen.

Alles, was Sie schon immer über User Account Control (UAC) wissen wollten finden Sie in einem 97-seitigen Word-Dokument im Microsoft-Downloadcenter.

Morgen machen wir unsere Anwendungen endgültig "UAC-fähig"!

Ihr Neno Loje

P.S. Übrigens, das Verhalten der Virtualisierung lässt sich auch über Gruppenrichtlinien (Systemsteuerung » Verwaltung » Lokale Sicherheitsrichtlinie dann unter Sicherheitseinstellungen » Lokale Richtlinien » Sicherheitsoptionen) steuern. So kann man die Virtualisierung auch für alle Programme abschalten, wenn man – z.B. zu Entwicklungs- und Testzwecken –die Fehler auch sehen möchte!

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.

* *
* *