Jaký je rozdíl mezi složkami „System32“ a „SysWOW64“ ve Windows?

V 64bitových verzích systému Windows máte dvě samostatné složky Program Files. Tím to ale nekončí. Máte také dva samostatné systémové adresáře, kde jsou uloženy knihovny DLL a spustitelné soubory: System32 a SysWOW64. Přes jména je System32 plný 64bitových souborů a SysWOW64 je plný 32bitových souborů. Co tedy dává?

Co je System32?

SOUVISEJÍCÍ: Co jsou soubory DLL a proč mi v počítači chybí?

Adresář System32 obsahuje systémové soubory systému Windows, a to jak soubory knihovny DLL používané programy, tak obslužné programy programu .EXE, které jsou součástí systému Windows. Zatímco většina souborů, které zde najdete, je součástí operačního systému Windows, softwarové programy třetích stran někdy do této složky instalují také vlastní soubory DLL.

Aplikace spuštěné ve vašem systému mohou být nainstalovány ve složce Program Files nebo kdekoli jinde, ale často načítají celosystémové knihovny ze složky System32.

Oddělení 32bitových a 64bitových knihoven

SOUVISEJÍCÍ: Jaký je rozdíl mezi složkami „Program Files (x86)“ a „Program Files“ ve Windows?

V 64bitové verzi systému Windows máte složku C: \ Program Files obsahující 64bitové programy a jejich soubory a složku C: \ Program Files (x86) obsahující 32bitové programy a jejich soubory. Je užitečné tyto soubory oddělit, protože 64bitové programy potřebují 64bitové soubory DLL a 32bitové programy potřebují 32bitové soubory DLL.

Pokud 32bitový program načte potřebný soubor DLL, najde 64bitovou verzi a pokusí se ji načíst, dojde k chybě. Rozdělením 64bitového a 32bitového softwaru do dvou různých složek programových souborů systém Windows zajistí, že se nebudou míchat a způsobovat problémy.

Ne všechny soubory DLL jsou však uloženy v programových souborech. Mnoho celosystémových knihoven, které jsou součástí systému Windows, je uloženo v C: \ System32 a některé programy sem také ukládají své vlastní soubory knihoven. Stejně jako Windows má samostatné 32bitové a 64bitové složky Program Files, má také samostatné 32bitové a 64bitové verze složky System32.

System32 a SysWOW64

V 32bitovém počítači ukládají všechny 32bitové programy své soubory do složky C: \ Program Files a umístění celosystémové knihovny je C: \ System32.

V 64bitovém počítači ukládají 64bitové programy své soubory do C: \ Program Files a složka C: \ Windows \ System32 v celém systému obsahuje 64bitové knihovny. 32bitové programy ukládají své soubory do složky C: \ Program Files (x86) a složka pro celý systém je C: \ Windows \ SysWOW64.

To je rozhodně protiintuitivní. Přes „32“ v názvu obsahuje složka System32 64bitové knihovny. A navzdory 64 v názvu obsahuje složka SysWOW64 32bitové knihovny - alespoň v 64bitových verzích systému Windows.

Obecně to nebudete potřebovat vědět. Operační systém Windows a programy, které používáte, automaticky umisťují své soubory do správného umístění a používají správnou složku. Pokud však někdy potřebujete ručně nainstalovat soubor DLL do správného umístění nebo zjistit, kde je jeden nainstalován - což je velmi vzácné - budete potřebovat vědět, který je který.

WOW64, vysvětleno

SOUVISEJÍCÍ: Proč je většina programů v 64bitové verzi systému Windows stále 32bitová?

Část názvu „WOW64“ zde odkazuje na software „Windows 32-bit on Windows 64-bit“, který je součástí operačního systému. To umožňuje systému Windows spouštět 32bitové programy v 64bitové verzi systému Windows. WoW64 přesměrovává přístup k souborům, aby zajistil, že programy budou fungovat správně.

Například pokud nainstalujete 32bitový program na 64bitovou verzi systému Windows a pokusí se zapsat do složky C: \ Program Files, WoW64 jej nasměruje na C: \ Program Files (x86). A pokud chce získat přístup do složky C: \ Windows \ System32, WoW64 ji nasměruje na C: \ Windows \ SysWOW64. Windows to provádí pomocí přesměrovače systému souborů.

To vše se děje automaticky a transparentně na pozadí. Program nemusí ani vědět, že běží na 64bitovém operačním systému, což umožňuje spuštění starších 32bitových programů bez úprav v 64bitových verzích systému Windows. WOW64 také přesměrovává přístup do registru a zajišťuje, že existují samostatné oblasti registru pro 64bitové a 32bitové programy.

Proč je tedy System32 64bitový a SysWOW64 32bitový?

Vše, co nás přivádí zpět k otázce milionů dolarů: Proč je složka „System32“ 64bitová a SysWOW64 32bitová?

Odpověď se zdá být taková, že mnoho 32bitových aplikací bylo napevno použito k použití adresáře C: \ Windows \ System32. Když vývojáři tyto aplikace znovu zkompilovali pro 64bitové verze systému Windows, pokračovali v používání adresáře C: \ Windows \ System32.

Spíše než přejmenovávat adresář a nutit vývojáře k přechodu na nový, což přeruší mnoho aplikací, ponechal Microsoft jako standardní adresář systémové knihovny „System32“. Vytvořili nový adresář knihovny pro aplikace běžící pod vrstvou WoW64, kterou pojmenovali „SysWOW64“. Když o tom přemýšlíte tímto způsobem, název dává větší smysl.

Ano, je trochu hloupé, že adresář s názvem „32“ je nyní 64bitový. Možná to Microsoft měl vidět, když to v 90. letech pojmenovali C: \ Windows \ System32. Ale i když by bylo přímočarější schéma pojmenování hezké, nestojí za to prolomit spoustu programů a vytvořit více práce pro vývojáře, jen aby se tam dostali. To znamená, že jsme v dohledné budoucnosti uvízli u systémů System32 a SysWOW64.