Dateisystemumleitung

Das Verzeichnis %windir%\System32 ist für 64-Bit-Anwendungen unter 64-Bit-Windows reserviert. Die meisten DLL-Dateinamen wurden beim Erstellen von 64-Bit-Versionen der DLLs nicht geändert, sodass 32-Bit-Versionen der DLLs in einem anderen Verzeichnis gespeichert werden. WOW64 blendet diesen Unterschied mithilfe einer Dateisystemumleitung aus.

Wenn eine 32-Bit-Anwendung versucht, auf %windir%\System32, %windir%\lastgood\system32 oder %windir%\regedit.exe zuzugreifen, wird der Zugriff in den meisten Fällen an einen architekturspezifischen Pfad umgeleitet.

Hinweis

Diese Pfade werden nur zu Referenzzwecken bereitgestellt. Aus Gründen der Kompatibilität sollten Anwendungen diese Pfade nicht direkt verwenden. Stattdessen sollten sie die unten beschriebenen APIs aufrufen.

 

Original Path Umgeleiteter Pfad für 32-Bit-x86-Prozesse Umgeleiteter Pfad für 32-Bit-ARM-Prozesse
%windir%\System32 %windir%\SysWOW64 %windir%\SysArm32
%windir%\lastgood\system32 %windir%\lastgood\SysWOW64 %windir%\lastgood\SysArm32
%windir%\regedit.exe %windir%\SysWOW64\regedit.exe %windir%\ SysArm32\regedit.exe

 

Wenn der Zugriff bewirkt, dass das System die UAC-Eingabeaufforderung anzeigt, erfolgt keine Umleitung. Stattdessen wird die 64-Bit-Version der angeforderten Datei gestartet. Um dieses Problem zu vermeiden, geben Sie entweder das Verzeichnis SysWOW64 an, um Umleitungen zu vermeiden und den Zugriff auf die 32-Bit-Version der Datei sicherzustellen, oder führen Sie die 32-Bit-Anwendung mit Administratorrechten aus, damit die UAC-Eingabeaufforderung nicht angezeigt wird.

Windows Server 2003 und Windows XP: UAC wird nicht unterstützt.

Bestimmte Unterverzeichnisse sind von der Umleitung ausgenommen. Der Zugriff auf diese Unterverzeichnisse wird nicht an %windir%\SysWOW64 umgeleitet:

%windir%\system32\catroot
%windir%\system32\catroot2
%windir%\system32\driverstore
%windir%\system32\drivers\etc
%windir%\system32\logfiles
%windir%\system32\spool

Windows Server 2008, Windows Vista, Windows Server 2003 und Windows XP: %windir%\system32\driverstore wird umgeleitet.

Um den Namen des 32-Bit-Systemverzeichnisses abzurufen, sollten 64-Bit-Anwendungen die GetSystemWow64Directory2-Funktion (Windows 10, Version 1511) oder die GetSystemWow64Directory-Funktion verwenden.

Anwendungen sollten die SHGetKnownFolderPath-Funktion verwenden, um den Verzeichnisnamen %ProgramFiles% zu bestimmen.

Windows Server 2003 und Windows XP: Anwendungen sollten die SHGetSpecialFolderPath-Funktion verwenden, um den Verzeichnisnamen %ProgramFiles% zu bestimmen.

Anwendungen können den WOW64-Dateisystemumleitungsor mithilfe der Funktionen Wow64DisableWow64FsRedirection, Wow64EnableWow64FsRedirection und Wow64RevertWow64FsRedirection steuern. Das Deaktivieren der Dateisystemumleitung wirkt sich auf alle Dateivorgänge aus, die vom aufrufenden Thread ausgeführt werden. Daher sollte sie nur bei Bedarf für einen einzelnen CreateFile-Aufruf deaktiviert und unmittelbar nach der Rückgabe der Funktion erneut aktiviert werden. Das Deaktivieren der Dateisystemumleitung über einen längeren Zeitraum kann verhindern, dass 32-Bit-Anwendungen System-DLLs laden, was dazu führt, dass die Anwendungen fehlschlagen.

32-Bit-Anwendungen können auf das systemeigene Systemverzeichnis zugreifen, indem %windir%\Sysnative durch %windir%\System32 ersetzt wird. WOW64 erkennt Sysnative als einen speziellen Alias, der angibt, dass das Dateisystem den Zugriff nicht umleiten soll. Dieser Mechanismus ist flexibel und einfach zu bedienen, daher ist er der empfohlene Mechanismus, um die Dateisystemumleitung zu umgehen. Beachten Sie, dass 64-Bit-Anwendungen den Sysnative-Alias nicht verwenden können, da es sich um ein virtuelles Verzeichnis und kein echtes Verzeichnis handelt.

Windows Server 2003 und Windows XP: Der Sysnative Alias wurde ab Windows Vista hinzugefügt.