Ein .AppV File ist in erster Linie ein „Zip“ Archiv. Dieses kann nach dem Umbenennen im Dateisystem ausgepackt werden. Im ausgepackten Zustand ergibt sich die folgende Dateistruktur. Alle Datei und Ordnernamen werden über html Encoding codiert. Beispiel, ein Leerzeichen wird zu %20 also „Neuer Ordner“ zu „Neuer%20Ordner“.
Es muss zwischen den eigentlichen Installationsdateien für das System, und speziellen Verzeichnissen, wie Profildaten (appdata) oder gemeinsamen Dateien unterschieden werden. Diese Ortner befinden sich im VFS Verzeichnis.
Ordneraufbau
STAMMORDNER
Konfigurateionsdateien (.xml)
Registry.dat (virtuelle Registrierung des .AppV Datei)
ROOT-Ordner
Installationsdateien (ProgramFilesX86, Programfiles)
VFS (Spezielle Verzeichnisse )
...
SystemX86 (entspricht c:\windows\syswow64 oder system32)
Windows
LocalAppdataLow (entspricht %LOCALAPPDATA%)
....
Die genannten Systemverzeichnisse entsprechen in vielen Fällen den Locations für eine MSI Generierung. Genauere Informationen sind hier zu finden:
http://msdn.microsoft.com/en-us/library/windows/desktop/dd765197(v=vs.85).aspx
Einige Verzeichnisse und deren Lokation finden Sie in der folgende Tabelle (für eine 32 Bit Anwendung auf einem 64 Bit Windows)
AppV 5 Dateiname | WiX MSI Parameter | Dateisystem |
AppData | AppDataFolder | C:\users\<USERNAME>\appdata\roaming |
Common%20AppData | CommonAppDataFolder | C:\ProgramData |
Fonts | FontsFolder | C:\Windows\Fonts |
LocalAppDataLow | LocalAppDataFolder | C:\users\<USERNAME>\appdata\LocalLow |
Profile | ? | Cusers\<username>\ |
ProgramFilesCommonX86 | CommonFilesFolder | C:\program Files x86\Common Files |
SystemX86 | SystemFolder | C:\Windows\syswow64\ |
Windows | WindowsFolder | C:\WindowsFolder |
Aufbau der AppV 5 Registrierung
Die Datei Registry.dat kann mit regedit32.exe importiert, betrachtet und bearbeitet werden. Eine Analyse für AppV kann auch Extern mit dem Tool Reglookup (http://projects.sentinelchicken.org/reglookup/) erfolgen.
In der Registrierung sind die Folgenden Zweige zu betrachten:
App-V Regkey | Bedeutung |
/REGISTRY/MACHINE/ | Einstellungen für das System |
/REGISTRY/USER/[{AppVCurrentUserSID} | Einstellungen für den Benutzer |
/REGISTRY/USER/S-1-5-19 | Einstellungen NT-Autorität |
/REGISTRY/USER/\[\{AppVCurrentUserSID\}\]_CLASSES | |
... Weitere spezifische |
AppV Verwendet eigene Variablen, um die Anwendung bei der Ausführung an das System an zupassen. Diese werden in codierten Strings hinterleget. Die ValueID hat wiederum ein anderes Fomat als wie die bekannten Values (REG_SZ, DWORD etc.). Wir konnten die folgenden ID Elemente über das Tool Reglookup wie folgt zuordnen. Es gibt hier sicher weitere.
# 0x00400001 = "Reg_SZ"
# 0x00400002 = "Reg_SZ"
# 0x00020000 = _Binary
# 0x00040000 = ? ",%00%00%00%00," Standard key und Reg_sz!
# 0x00040001 = "Reg_SZ
# 0x00440001 = "REG_SZ"
# 0x00400007 = Reg_SZ
Nach einer erfolgreichen Dekodierung finden sich in manchen Reg_SZ Elementen die folgenden AppV Variablen. Die Zielverzeichnisse entsprechen dabei denen aus der Ordnertabelle oben.
App-V Reg Variable |
[{AppVPackageRoot}] |
[SystemFolder] |
[{ProgramFilesCommonX86}] |
[{Programs}] |
[{Common Programs}] |
[{Windows}] |
[{Local AppData}] |
[{AppData}] |
[{Common AppData}] |
[{Fonts}] |
In Einigen Fällen werden zusätzlich Elemente zur Kennzeichnung von „DOS“ ShortPath Elementen an die Variable gehängt.
[{AppVPackageRoot}{~}]
Zusätzlich kann dieses Element gefunden werden. Die Bedeutung ist aktuell unklar.
[<VARIABLE>{?}]