W 64-bitowych wersjach systemu Windows są dostępne dwa osobne foldery Program Files. Ale na tym się nie kończy. Istnieją również dwa oddzielne katalogi systemowe, w których przechowywane są biblioteki DLL i pliki wykonywalne: System32 i SysWOW64. Pomimo nazw System32 jest pełen 64-bitowych plików, a SysWOW64 jest pełen 32-bitowych plików. Co daje?
Katalog System32 zawiera pliki systemowe Windows, oba pliki bibliotek .DLL używane przez programy i narzędzia programu .EXE, które są częścią systemu Windows. Podczas gdy większość plików znajdujących się tutaj jest częścią systemu operacyjnego Windows, programy innych producentów czasami instalują własne pliki DLL również w tym folderze.
Aplikacje uruchomione w systemie mogą być instalowane w folderze Program Files lub w innym miejscu, ale często ładują całe biblioteki systemowe z folderu System32.
W 64-bitowej wersji systemu Windows znajduje się folder C: \ Program Files zawierający programy 64-bitowe i ich pliki oraz folder C: \ Program Files (x86) zawierający programy 32-bitowe i ich pliki. Pomocne może być oddzielenie tych plików, ponieważ programy 64-bitowe wymagają 64-bitowych plików DLL, a 32-bitowe programy wymagają 32-bitowych plików DLL.
Jeśli 32-bitowy program załaduje potrzebny plik DLL, znajdzie wersję 64-bitową i spróbuje ją załadować, ulegnie awarii. Oddzielając oprogramowanie 64-bitowe i 32-bitowe od dwóch różnych folderów programów, system Windows zapewnia, że nie będą się mylić i powodować problemów.
Jednak nie wszystkie pliki DLL są przechowywane w Program Files. Wiele systemowych bibliotek dołączonych do systemu Windows jest przechowywanych w C: \ System32, a niektóre programy zrzucają tutaj także własne pliki biblioteki. Tak więc, podobnie jak Windows ma oddzielne 32-bitowe i 64-bitowe foldery Program Files, ma również oddzielne 32-bitowe i 64-bitowe wersje folderu System32.
Na komputerze 32-bitowym wszystkie 32-bitowe programy przechowują swoje pliki w C: \ Program Files, a systemowa lokalizacja biblioteki to C: \ System32.
Na 64-bitowym komputerze programy 64-bitowe przechowują swoje pliki w C: \ Program Files, a systemowy folder C: \ Windows \ System32 zawiera biblioteki 64-bitowe. Programy 32-bitowe przechowują swoje pliki w C: \ Program Files (x86), a folder systemowy to C: \ Windows \ SysWOW64.
Jest to zdecydowanie sprzeczne z intuicją. Pomimo nazwy "32" w nazwie, folder System32 zawiera biblioteki 64-bitowe. I pomimo 64 w nazwie, folder SysWOW64 zawiera biblioteki 32-bitowe - przynajmniej w 64-bitowych wersjach systemu Windows.
Zasadniczo nie musisz tego wiedzieć. System operacyjny Windows i używane programy automatycznie umieszczają pliki we właściwej lokalizacji i używają właściwego folderu. Jednakże, jeśli kiedykolwiek będziesz musiał ręcznie zainstalować plik DLL we właściwej lokalizacji lub znaleźć miejsce instalacji - co jest bardzo rzadkie - musisz wiedzieć, która jest która.
Nazwa "WOW64" odnosi się tutaj do oprogramowania Microsoft "Windows 32-bit na Windows 64-bit", które jest częścią systemu operacyjnego. Dzięki temu Windows może uruchamiać programy 32-bitowe w 64-bitowej wersji systemu Windows. WoW64 przekierowuje dostęp do plików, aby upewnić się, że programy będą działać poprawnie.
Na przykład, jeśli zainstalujesz 32-bitowy program w 64-bitowej wersji systemu Windows i spróbujesz napisać do folderu C: \ Program Files, WoW64 wskaże go w C: \ Program Files (x86). A jeśli chce uzyskać dostęp do folderu C: \ Windows \ System32, WoW64 wskazuje go w C: \ Windows \ SysWOW64. System Windows robi to za pomocą readresatora systemu plików.
Wszystko dzieje się automatycznie i transparentnie w tle. Program nie musi nawet wiedzieć, że działa w 64-bitowym systemie operacyjnym, co pozwala starszym programom 32-bitowym działać bez modyfikacji w 64-bitowych wersjach systemu Windows. WOW64 przekierowuje również dostęp do rejestru, zapewniając oddzielne obszary rejestru dla programów 64-bitowych i 32-bitowych.
Wszystko to prowadzi nas z powrotem do pytania za milion dolarów: Dlaczego folder "System32" jest 64-bitowy, a SysWOW64 32-bitowy?
Odpowiedź wydaje się polegać na tym, że wiele 32-bitowych aplikacji zostało zakodowanych na stałe w katalogu C: \ Windows \ System32. Gdy programiści skompilowali te aplikacje dla 64-bitowych wersji systemu Windows, nadal używali katalogu C: \ Windows \ System32.
Zamiast zmieniać nazwę katalogu i zmuszać programistów do przejścia na nowy, łamiąc wiele aplikacji, Microsoft pozostawił "System32" jako standardowy katalog biblioteki systemowej. Stworzyli nowy katalog bibliotek dla aplikacji działających w warstwie WoW64, które nazwali "SysWOW64". Kiedy myślisz o tym w ten sposób, nazwa ma więcej sensu.
Tak, jest trochę głupio, że katalog z "32" w nazwie jest teraz 64-bitowy. Być może Microsoft powinien był to zauważyć, gdy nazwali go C: \ Windows \ System32 w latach 90-tych. Ale, chociaż bardziej prosty schemat nazewnictwa byłby przyjemny, nie warto łamać wielu programów i tworzyć więcej pracy dla programistów, aby się tam dostać. Oznacza to, że utknęliśmy w systemie System32 i SysWOW64 w przewidywalnej przyszłości.