Přesměrovač systému souborů
Adresář %windir%\System32 je vyhrazený pro 64bitové aplikace v 64bitovém systému Windows. Většina názvů souborů DLL se při vytváření 64bitových verzí knihoven DLL nezměnila, takže 32bitové verze knihoven DLL jsou uložené v jiném adresáři. WOW64 skryje tento rozdíl pomocí přesměrovače systému souborů .
Ve většině případů se 32bitová aplikace pokusí o přístup k %windir%\System32, %windir%\lastgood\system32, or %windir%\regedit.exe, přístup se přesměruje na cestu specifickou pro architekturu.
Poznámka
Tyto cesty jsou k dispozici pouze pro referenci. Kvůli kompatibilitě by aplikace neměly tyto cesty používat přímo. Místo toho by měli volat rozhraní API popsaná níže.
Původní cesta | Přesměrovaná cesta pro 32bitové procesy x86 | Přesměrovaná cesta pro 32bitové procesy ARM |
---|---|---|
%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 |
Pokud přístup způsobí, že systém zobrazí výzvu nástroje Řízení uživatelských účtů, nedojde k přesměrování. Místo toho se spustí 64bitová verze požadovaného souboru. Chcete-li předejít tomuto problému, zadejte adresář SysWOW64, abyste se vyhnuli přesměrování a zajistili přístup k 32bitové verzi souboru, nebo spusťte 32bitovou aplikaci s oprávněními správce, aby se nezobrazila výzva řízení uživatelských účtů.
Windows Server 2003 a Windows XP: nástroj řízení uživatelských účtů se nepodporuje.
Některé podadresáře jsou vyloučené z přesměrování. Přístup k těmto podadresářům není přesměrován na %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 a Windows XP: %windir%\system32\driverstore je přesměrován.
K načtení názvu 32bitového systémového adresáře by 64bitové aplikace měly používat funkci GetSystemWow64Directory2 (Windows 10, verze 1511) nebo GetSystemWow64Directory.
Aplikace by měly použít funkci SHGetKnownFolderPath k určení názvu adresáře %ProgramFiles%.
Windows Server 2003 a Windows XP: Aplikace by měly použít funkci SHGetSpecialFolder Path k určení názvu adresáře %ProgramFiles%.
Aplikace mohou řídit přesměrování systému souborů WOW64 pomocí Wow64DisableWow64FsRedirection, Wow64EnableWow64FsRedirectiona Wow64RevertWow64FsRedirection. Zakázání přesměrování systému souborů má vliv na všechny operace souborů prováděné volajícím vláknem, takže by mělo být zakázáno pouze v případě, že je to nutné pro jeden CreateFile volání a opětovné povolení znovu po vrácení funkce. Zakázání přesměrování systému souborů po delší dobu může zabránit 32bitovým aplikacím v načítání systémových knihoven DLL, což způsobuje selhání aplikací.
32bitové aplikace mají přístup k nativnímu systémovému adresáři nahrazením %windir%\Sysnative pro %windir%\System32. WOW64 rozpozná sysnative jako speciální alias sloužící k označení, že systém souborů by neměl přesměrovat přístup. Tento mechanismus je flexibilní a snadno použitelný, proto se doporučuje obejít přesměrování systému souborů. Mějte na paměti, že 64bitové aplikace nemůžou používat alias Sysnative, protože se jedná o virtuální adresář, který není skutečný.
Windows Server 2003 a Windows XP: Alias Sysnative byl přidán od systému Windows Vista.