WOW64

aus WB Wiki; freien Wissensdatenbank rund ums Thema Computer
(Weitergeleitet von Windows on Windows 64)
Wechseln zu: Navigation, Suche

Einleitung

WOW steht für „Windows on Windows“ und ist ganz grob dafür gedacht, ältere Anwendungen auf aktuellen Windows-Systemen ohne Modifikationen auszuführen. Die erste Version war so z.B. dafür gedacht, alte 16-Bit-Anwendungen unter Windows NT (einem 32-Bit-Betriebssystem) auszuführen.

Mit Einführung von 64-Bit-Betriebssystemen, wie Windows XP x64 oder VISTA 64 war ein völlig neues Subsystem notwendig. Mit Hilfe dem sogenannten „Microsoft Windows-32-on-Windows-64" (WOW64) ist es also möglich, 32-Bit-Programme ohne Modifikationen auf einem 64-Bit-System auszuführen. 16-Bit-Anwendungen bleiben damit allerdings außen vor und können nicht mehr verwendet werden.

Was aber steckt genau hinter WOW oder genauer hinter WOW64 ?

Das Betriebssystem muss Anfragen einer 32-Bit-Anwendung und einer 64-Bit-Anwendung an das Dateisystem und die Registry klar trennen. Grund ist die Tatsache, dass z.B. bestimmte DLL`s oder Registry-Einstellungen unter dem gleichen Namen für beide Welten bereitgestellt werden müssen und untereinander nicht kompatibel sind. Es muss daher konsequent verhindert werden, dass ein 64-Bit-Prozess auf 32-Bit-Systemdateien und Einstellungen zugreift. Anders herum darf ein 32-Bit-Prozess natürlich auch nicht auf 64-Bit-Bereiche zugreifen. Es geht konkret im Filesystem um den Bereich unter SYSTEM32 und in der Registry vornehmlich um einige Bereiche unter HKEY_LOCAL_MASCHINE\SOFTWARE.

So werden Anfragen an das System32-Verzeichnis von einem 32-Bit-Prozess von WOW64 an das Verzeichnis %systemroot%\SysWOW64 weitergeleitet. Anfragen eines 64-Bit-Prozesses ganz normal an %systemroot%\System32. Auch wenn es der Name anders vermuten lässt, befinden sich also unter SYSTEM32 nur 64-Bit-Programme. Anfragen eines 32-Bit-Prozesses an HKEY_LOCAL_MASCHINE\SOFTWARE werden umgeleitet nach HKEY_LOCAL_MASCHINE\SOFTWARE\Wow6432Node. Greift eine 32-Bit-Anwendung nun also auf %systemroot%\System32\crypt32.dll zu, wird diese Anfrage vom Betriebssystem nach %systemroot%\ SysWOW64\crypt32.dll umgeleitet.

Da in den Unterverzeichnissen SPOOL, CATROOT, CATROOT1 und DRIVERS\ETC Informationen, wie Zertifikate oder Einstellungen gespeichert sind, die von beiden Systemen benötigt werden, gilt für diese Verzeichnisse die Umleitung nicht.

Ähnlich wie bei SYSTEM32 sieht es auch bei dem Verzeichnis %ProgramFiles% aus. Alle Anfragen von 32-Bit-Anwendungen an %ProgramFiles% werden von WOW64 nach %ProgramFiles(x86)% umgeleitet. Wer dies einmal testen möchte, kann unter C:\Windows\SysWOW64 die CMD.EXE starten und dort den Befehl „CD %ProgramFiles%“ eingeben. Anschließend unter C:\Windows\System32 ebenfalls die CMD.EXE starten und den gleichen Befehl eingeben. Nun das Ergebnis vergleichen. In der 32-Bit-Eingabeaufforderung landen wir unter C:\Programm Files (x86) und in der 64-Bit-Eingabeaufforderung unter C:\Programm Files.

Wer diese Technik verinnerlicht hat, versteht auch sehr schnell, warum sehr systemnahe Anwendungen trotz der WOW64-Technik unter VISTA nicht funktionieren. Betroffen sind hiervon unter anderem Defragmentierungs- und Antivirusprogramme. Sie greifen nämlich direkt auf den System-Kernel zu können deshalb von WOW nicht profitieren. Auch ist zu verstehen, warum 32-Bit-Shell-Extensions unter VISTA nicht mehr funktionieren können. Der 64-Bit-Explorer darf keine 32-Bit DLL`s laden. Ein konkretes Beispiel wären z.B. Kontextmenüeinträge von WinRAR im Datei-Explorer. Eine alte, nicht 64-Bit kompatible WinRAR- Version kann diese Kontextmenüeinträge unter VISTA nicht anlegen.