Sdílet prostřednictvím


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.