Omdirigering av filsystem
Katalogen %windir%\System32 är reserverad för 64-bitarsprogram i 64-bitars Windows. De flesta DLL-filnamn ändrades inte när 64-bitarsversioner av DLL:erna skapades, så 32-bitarsversioner av DLL:er lagras i en annan katalog. WOW64 döljer den här skillnaden med hjälp av en filsystemomdirigering.
I de flesta fall omdirigeras åtkomsten till en arkitekturspecifik sökväg när ett 32-bitarsprogram försöker komma åt %windir%\System32, %windir%\lastgood\system32, or %windir%\regedit.exe.
Not
Dessa sökvägar tillhandahålls endast som referens. För kompatibilitet bör program inte använda dessa sökvägar direkt. I stället bör de anropa API:erna som beskrivs nedan.
Ursprunglig sökväg | Omdirigerad sökväg för 32-bitars x86-processer | Omdirigerad sökväg för 32-bitars ARM-processer |
---|---|---|
%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 |
Om åtkomsten gör att systemet visar UAC-prompten sker inte omdirigering. I stället startas 64-bitarsversionen av den begärda filen. För att förhindra det här problemet anger du antingen katalogen SysWOW64 för att undvika omdirigering och säkerställer åtkomst till 32-bitarsversionen av filen, eller kör 32-bitarsprogrammet med administratörsbehörighet så att UAC-prompten inte visas.
Windows Server 2003 och Windows XP: UAC stöds inte.
Vissa underkataloger är undantagna från omdirigering. Åtkomsten till dessa underkataloger omdirigeras inte till %windir%\SysWOW64:
- %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 och Windows XP: %windir%\system32\driverstore omdirigeras.
För att hämta namnet på 32-bitars systemkatalogen bör 64-bitarsprogram använda funktionen GetSystemWow64Directory2 (Windows 10, version 1511) eller funktionen GetSystemWow64Directory.
Program bör använda funktionen SHGetKnownFolderPath för att fastställa %ProgramFiles% katalognamn.
Windows Server 2003 och Windows XP: Program bör använda funktionen SHGetSpecialFolderPath för att fastställa %ProgramFiles% katalognamn.
Program kan styra omdirigeringsfilen WOW64 med hjälp av Wow64DisableWow64FsRedirection, Wow64EnableWow64FsRedirectionoch Wow64RevertWow64FsRedirection funktioner. Om du inaktiverar omdirigering av filsystem påverkas alla filåtgärder som utförs av den anropande tråden, så det bör endast inaktiveras när det behövs för en enda CreateFile anrop och återaktiveras igen omedelbart efter att funktionen har returnerats. Om du inaktiverar omdirigering av filsystem under längre perioder kan det förhindra att 32-bitarsprogram läser in system-DLL:er, vilket gör att programmen misslyckas.
32-bitarsprogram kan komma åt den interna systemkatalogen genom att ersätta %windir%\Sysnative för %windir%\System32. WOW64 identifierar Sysnative som ett särskilt alias som används för att indikera att filsystemet inte ska omdirigera åtkomsten. Den här mekanismen är flexibel och lätt att använda, därför är det den rekommenderade mekanismen för att kringgå omdirigering av filsystem. Observera att 64-bitarsprogram inte kan använda sysnativt alias eftersom det är en virtuell katalog som inte är en riktig.
Windows Server 2003 och Windows XP: Sysnative-aliaset lades till från och med Windows Vista.