Obsah
Proč Windows 11 ukládá 64bitové soubory do System32 a 32bitové soubory do SysWOW64
Proč System32 obsahuje 64bitové soubory
Jak Windows 11 přesměrovává 32bitové aplikace do SysWOW64
Použití virtuálního adresáře Sysnative
Šest složek v System32 nepodléhá přesměrování WOW64
SysArm32 se z Windows 11 pro Arm odstraňuje
Kompatibilita má přednost před srozumitelnějšími názvy
MS vysvětluje, proč Windows 11 ukládá 64bitové soubory do System32 a 32bitové soubory do SysWOW64
Čas: Oct, 20, 2026

Proč Windows 11 ukládá 64bitové soubory do System32 a 32bitové soubory do SysWOW64

Windows 11's System32 contains 64-bit files, while SysWOW64 contains 32-bit files

MS nenabízí 32bitovou edici Windows 11, operační systém však stále musí podporovat desítky let staré 32bitové aplikace. Jeho řešení využívá dva systémové adresáře: System32 pro nativní 64bitové soubory a SysWOW64 pro 32bitové soubory. Přesměrování systému souborů WOW64 automaticky nasměruje 32bitové aplikace do SysWOW64, když se pokusí přistoupit k System32.

Na počítači se systémem Windows 11 26H2 obsahují oba adresáře soubor s názvem kernel32.dll. Soubory mají odlišnou velikost, protože jeden je určen pro 64bitové aplikace a druhý pro 32bitový software.

Kernel32.dll appears in both System32 and SysWOW64 on Windows 11 26H2, but the 64-bit and 32-bit versions have different sizes

Pokud by MS mohl ukončit podporu 32bitového softwaru, jak to udělal Apple, Windows by už tuto architekturu kompatibility možná nepotřeboval. Velké množství existujících 32bitových aplikací však takový přechod výrazně komplikuje.

Proč System32 obsahuje 64bitové soubory

V éře 16bitových Windows se systémové soubory ukládaly do C:\Windows\System. Když přišly 32bitové Windows, MS zavedl pro 32bitové soubory adresář C:\Windows\System32, což vysvětluje jeho název.

V době, kdy byly vyvinuty 64bitové Windows, už měla řada aplikací cestu k System32 pevně zapsanou v kódu, místo aby ji získávala prostřednictvím funkce GetSystemDirectory. Dlouholetý zaměstnanec MSu Raymond Chen vysvětlil, že po překompilování těchto aplikací na 64bitové programy nadále hledaly v System32, ale nyní tam očekávaly 64bitové soubory.

Podobný problém s kompatibilitou představovaly dávkové soubory. Pokud by System32 nadále obsahoval 32bitové nástroje, skript spouštějící System32\reg.exe by upravoval 32bitové zobrazení registru namísto očekávané 64bitové verze.

MS proto rozhodl, že System32 bude obsahovat soubory odpovídající nativní architektuře operačního systému. Dokumentace k přesměrování systému souborů uvádí, že adresář %windir%\System32 je v 64bitových Windows vyhrazen pro 64bitové aplikace.

MS při vytváření 64bitových verzí také ponechal beze změny názvy většiny knihoven DLL. Soubor kernel32.dll—jehož název vychází ze starších konvencí pojmenování systému MS-DOS—se proto v obou umístěních nazývá kernel32.dll. Pro 32bitové verze tedy bylo nutné vytvořit samostatný adresář.

Chen poznamenal, že „32“ v názvu System32 je nyní pouze součástí názvu a už přesně nepopisuje jeho obsah. Podle něj by se složka v ideálním návrhu mohla jmenovat SysExec, protože poskytuje soubory odpovídající právě spouštěnému programu.

WOW64 znamená „Windows 32-bit on Windows 64-bit“. Jde o vrstvu kompatibility od MSu určenou pro 32bitové aplikace. „64“ v názvu SysWOW64 odkazuje na hostitelský operační systém, přestože samotný adresář obsahuje 32bitové soubory. Je ironií, že 64bitové aplikace nepoužívají systémovou složku, která má v názvu „64“.

Jak Windows 11 přesměrovává 32bitové aplikace do SysWOW64

32bitový proces nemůže pro spuštění načíst 64bitovou knihovnu DLL a 64bitový proces nemůže načíst 32bitovou knihovnu DLL. Bez přesměrování by 32bitová aplikace požadující kernel32.dll z adresáře System32 obdržela nekompatibilní soubor.

V systému Windows pro x64 WOW64 transparentně přesměrovává příslušné požadavky systému souborů, kdykoli 32bitová aplikace požádá o chráněnou cestu v System32. Aplikace si obvykle ani neuvědomí, že byla cesta změněna.

Toto chování lze předvést otevřením 32bitového Příkazového řádku z C:\Windows\SysWOW64\cmd.exe. V tomto okně vrátí příkaz echo %PROCESSOR_ARCHITECTURE% hodnotu x86, zatímco standardní 64bitový Příkazový řádek uvede AMD64. Spuštění příkazu dir C:\Windows\System32\kernel32.dll v obou oknech zobrazí odlišné velikosti souborů, přestože byla zadána stejná cesta, protože 32bitový proces je přesměrován na kopii v SysWOW64.

The 32-bit Command Prompt reports x86 and accesses the SysWOW64 version of kernel32.dll when System32 is requestedTask Manager identifies which Command Prompt is running as a 32-bit process

S tímto chováním se setkal i Matt Pietrek, tehdejší člen týmu Visual Studio ve společnosti MS. V článku pro MSDN Magazine z roku 2006 popsal, jak z 32bitového Příkazového řádku zobrazil soubor kernel32.dll v obou adresářích a zpočátku ho mátlo, že výsledky vypadaly totožně.

WOW64 se neomezuje pouze na přesměrování systému souborů. Prostřednictvím přesměrování registru poskytuje 32bitovým aplikacím samostatné zobrazení registru v HKEY_LOCAL_MACHINE\Software\Wow6432Node. Jejich proměnnou prostředí %ProgramFiles% také nastavuje na Program Files (x86).

32-bit applications receive a separate registry view under WOW6432Node on Windows 11

MS upozorňuje na neobvyklou výjimku související s Řízením uživatelských účtů. Pokud otevření přesměrovaného souboru vyvolá výzvu UAC, k přesměrování nedojde a Windows místo toho spustí 64bitovou verzi. Vývojáři by proto měli v příslušných případech zadat cestu k SysWOW64 nebo spustit 32bitovou aplikaci jako správce.

Použití virtuálního adresáře Sysnative

Sysnative je virtuální adresář dostupný pouze 32bitovým aplikacím. Fyzicky se v C:\Windows nenachází a 64bitové aplikace k němu nemají přístup. Zadání C:\Windows\Sysnative do adresního řádku 64bitového Průzkumníka souborů vyvolá chybu, zatímco příkaz dir C:\Windows\Sysnative\cmd.exe v 32bitovém Příkazovém řádku funguje.

Sysnative is available to 32-bit applications but cannot be accessed through 64-bit File Explorer

Vývojáři mohou přesměrování zakázat voláním funkce Wow64DisableWow64FsRedirection, ovlivní tím však každou souborovou operaci v aktuálním vlákně. MS varuje, že zakázání přesměrování systému souborů může způsobit selhání načítání knihoven DLL.

Chen popsal Sysnative jako „lokální řešení lokálního problému“. Již dříve vývojářům doporučil, aby s emulátorem nebojovali, a uvedl, že 32bitový instalační program by měl v případě potřeby nativních 64bitových operací spustit 64bitový instalační program. Mnoho problémů s kompatibilitou vzniká tehdy, když se 32bitová aplikace pokouší chovat jako 64bitový proces.

Šest složek v System32 nepodléhá přesměrování WOW64

MS uvádí šest podadresářů System32, ke kterým mohou 32bitové aplikace přistupovat bez přesměrování. Seznam výjimek se postupem času měnil. Například adresář driverstore byl přesměrováván ve Windows Vista, Windows XP, Windows Server 2003 a Windows Server 2008.

MS důvod jednotlivých výjimek nevysvětluje. Některé z těchto adresářů však obsahují sdílená data, ke kterým musí 32bitové i 64bitové aplikace přistupovat konzistentně, například soubor hosts v drivers\etc.

SysArm32 se z Windows 11 pro Arm odstraňuje

Na počítačích s procesory Arm, jako jsou notebooky se Snapdragonem X, používají SysWOW64 také 32bitové aplikace x86. V minulosti byly 32bitové aplikace pro Arm přesměrovávány do třetího adresáře s názvem SysArm32.

Na systémech Arm64 překládá WOW64 kód x86 prostřednictvím emulátoru s názvem xtajit.dll. Naproti tomu procesory x64 spouštějí 32bitový kód nativně a přechod mezi režimy provádění spravuje Wow64Cpu.dll, jak uvádí implementační dokumentace MSu.

Dokumentace MSu pro vývojáře na platformě Arm nyní uvádí, že počítače s procesory Arm již nepodporují 32bitové aplikace pro Arm. Odstraňují se také systémové binární soubory, které byly dříve uloženy v adresáři SysArm32. Standardní aplikace x86 v 32bitové i 64bitové podobě nadále fungují prostřednictvím emulace Prism, která minulý rok získala podporu AVX a AVX2.

Kompatibilita má přednost před srozumitelnějšími názvy

MS mohl System32 přejmenovat už před dvěma desetiletími, tím by však přestal fungovat velký počet existujících aplikací. Společnost proto kolem zavedeného názvu adresáře vybudovala přesměrování, virtuální alias a sadu výjimek. To odráží stejný přístup zaměřený na kompatibilitu, díky němuž byly pro starší software zachovány prvky, jako je správce haldy z Windows 95.

Přechod na 64bitové Windows nepřežily všechny aplikace, přičemž známým příkladem je 3D Pinball. Ačkoli by název jako SysExec byl srozumitelnější, zastaralý název adresáře způsobí méně škod než rozsáhlá selhání aplikací a instalačních programů.

2
Live Chat