Zum 23.08.2023 ist die NWC Services GmbH zur CANCOM GmbH geworden. Besuchen Sie uns gerne auf www.cancom.de
Toggle Bar

BLOG

BLOGGING CONSULTANTS

NWC Services Blog

Blogs von Consultants der NWC Services GmbH

Datei- und Registryvirtualisierung unter Windows 7

Allgemein

Unter Windows XP mussten Anwendungen, die während der Laufzeit auf Windows Systemordner oder auf die LOCAL_MACHINE/Software-Bereiche der Registry schreibend zugegriffen haben, mit administrativen Rechten laufen. Alternativ musste der Zugriff auf den entsprechenden Ordner (meist der Programmordner) oder Registrykey mit schreibenden Rechten für die User ausgestattet werden.

In Windows 7 (streng genommen seit Windows Vista) existiert nun die Datei- und Registry Virtualisierung, die es ermöglicht auch solche schlecht programmierten Anwendungen (also Anwendungen die sich nicht nach MS-Entwicklungsrichtlinien richten) ohne Eingriff in die Berechtigungsverwaltung ans Laufen zu bringen. Realisiert wird dies über den Kernel-Mode Treiber luafv.sys.

Die Dateisystem- und Registryvirtualisierung erkennt, wenn Zugriffe verweigert werden, weil eine Anwendung nicht genügend Privilegien besitzt und lenkt die Zugriffe auf ein lokales Verzeichnis im Userbereich um. Dies geschieht völlig unbemerkt von der Anwendung, für die sich das neue lokale Verzeichnis absolut identisch zu seinem System-Pendant präsentiert.

Der Virtualisierungsstatus jeder einzelnen Anwendung kann über den Taskmanager eingeblendet werden. Hierfür muss die entsprechende Spalte unter Ansicht -> Spalten auswählen -> Virtualisierung der Benutzerkontensteuerung aktiviert werden. Standardmäßig wird für den 32-Bit Internet Explorer die Virtualisierung aktiviert, da dieser als Host für ActiveX-Controls und Scripts dient, die potentiell nicht mit der Ausführung unter normalen Benutzerrechten kompatibel ist. Über das Kontextmenu lässt sich die Virtualisierung eines jeden Prozesses manuell verändern.

TaskManagerVirtualisierung

 

Dateisystemvirtualisierung

Virtualisiert werden die Systemverzeichnisse %ProgramFiles%, %ProgramFiles(x86)%, %ProgramData% und %Systemroot%. Das Root Verzeichnis für die virtualisierten Dateien ist %LOCALAPPDATA%\VirtualStore.

Um die Funktionalität der Datei- und Registryvirtualisierung zu testen, kann eine cmd aufgemacht werden und eine Datei (z.B. mit dem Befehl „echo Virtualisierung aktiv > c:\windows\UACActive.ini“) geschrieben werden (Vorher im Task Manager die Virtualisierung des Prozesses cmd.exe aktivieren). Die Datei wird nun in den Pfad „C:\Users\\AppData\Local\VirtualStore\Windows“ geschrieben. Wird das Verzeichnis „c:\Windows“ mit einem dir-Befehl ausgelesen, wird dort ganz normal die UACActive.ini Datei angezeigt. Wird das Verzeichnis mit dem Windows Explorer angeschaut (der ja eine 64-Bit Anwendung ist und somit ohne Virtualisierung läuft) fehlt die Datei. Der Explorer bietet für diesen Fall den Button „Kompatibilitätsdateien“ in der Symbolleiste an, um direkt in den VirtualStore zu springen.

Ausführbare Binärdateien (EXE, BAT, PS1, SCR, DLL, etc.) sind von der Dateivirtualisierung ausgenommen. Sollen weitere Dateien ausgenommen werden, kann unter "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Luafv\Parameters" ein neuer REG_EXPAND_SZ Wert mit dem Namen "ExcludedExtensionsAdd" angelegt und mit den gewünschten zusätzlich zu exkludierenden Dateiendungen befüllt werden.

Sollen Anwendungen (z.B. in DSM 7) paketiert werden, die mit Hilfe der Dateivirtualisierung verteilt werden sollen, können Dateien auch direkt in den VirtualStore geschrieben werden.

Registry Virtualisierung

Die Registry Virtualisierung läuft nach einem sehr ähnlichen Schema ab. Wird versucht, einen Registry Key unterhalb von HKLM\Software zu schreiben, wird dieser über die Registry Virtualisierung abgefangen und nach „HKEY_USERS\>UserSID_Classes\VirtualStore“ (oder eben "HKEY_CURRENT_USER\Software\Classes\VirtualStore") umgeleitet. Wenn ein Benutzer versucht einen Registrykey zu lesen der Werte beinhaltet, die ganz normal in der Registry gespeichert sind und teilweise im virtualisierten Pfad, baut Windows im Hintergrund daraus eine vollständige Ansicht des Registrykeys auf, so dass sich dieser für eine Anwendung immer vollständig präsentiert.

Folgende Voraussetzungen müssen gegeben sein, damit die Registry-Virtualisierung für einen Anwendung genutzt wird:

  • Es muss ein 32 Bit Prozess sein.
  • Der Key muss in HKLM\Software geschrieben werden.
  • Der Key muss durch einen Administrator geschrieben werden können.
  • Der Prozess muss Interaktiv laufen (Kein Dienst, kein Scheduled Task, etc.).
  • Es darf kein Kernel-mode Prozess (z.B. Treiber) sein.
  • Die Anwendung besitzt kein Anwendungsmanifest (oder es ist nicht der Wert requestedExecutionLevel definiert). Das Manifest für eine Anwendung kann mit dem Tools „SigCheck.exe“ aus den Sysinternal überprüft werden.
  • Die Keys HKEY_LOCAL_MACHINE\Software\Classes, HKEY_LOCAL_MACHINE\Software\Microsoft\Windows und HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT sind von der Registry Virtualisierung ausgeschlossen.

Für eine Anwendung, für die ein Manifest existiert und „requestedExecutionLevel“ definiert ist, kann die Registry Virtualisierung explizit pro Key konfiguriert werden. Zu diesem Zweck werden flags geschrieben, die den Status der Virtualisierung pro Registry Key definieren. Folgende Flags sind möglich:

Flag

Bedeutung

REG_KEY_DONT_VIRTUALIZE

Dieser Flag schaltet die Virtualisierung für den betroffenen Key aus. Ein Schreibvorgang auf den betroffenen Key würde mit einer Anwendung für die die Registry Virtualisierung aktiv ist mit einer Fehlermeldung fehlschlagen.

REG_KEY_DONT_SILENT_FAIL

Wird dieses Flag gesetzt, wird der Benutzer über eine Umleitung benachrichtigt.

REG_KEY_RECURSE_FLAG

Setzt die Virtualisierungsoptionen automatisch für jeden neu angelegten Sub-Key. Wird das Flag gelöscht, werden keine Flags für bestehende Sub-Keys geändert.

Diese Statusflags können mit dem Commandline Tool „reg.exe“ modifiziert und eingesehen werden.

 

Praktische Anwendung

Grundsätzlich sollte speziell bei DSM SPY Paketen auf die Virtualisierungpfade im Dateisystem und in der Registry geachtet werden. Sollen Konfigurationseinstellungen für den User in solchen betroffenden Dateien gesetzt werden, können diese im DSM Paket direkt in den Virtualisierungspfaden erstellt werden. Diese Userbezogenen Befehle müssen entsprechend geflagged und die Verteilung von Benutzerteilen am Paket muss aktiviert sein.

×
Stay Informed

When you subscribe to the blog, we will send you an e-mail when there are new updates on the site so you wouldn't miss them.

HTTPs für Enteo / DSM 7 Webservices und Staging ve...
DSM 7 und die Ausfallsite

Ähnliche Beiträge

 

Kommentare

Derzeit gibt es keine Kommentare. Schreibe den ersten Kommentar!
Bereits registriert? Hier einloggen
Freitag, 29. März 2024

Sicherheitscode (Captcha)