Dom | O nas | FAQ
Zadowolony
Dlaczego Windows 11 przechowuje pliki 64-bitowe w System32, a pliki 32-bitowe w SysWOW64
Dlaczego System32 zawiera pliki 64-bitowe
Jak Windows 11 przekierowuje aplikacje 32-bitowe do SysWOW64
Korzystanie z wirtualnego katalogu Sysnative
Sześć folderów System32 jest wyłączonych z przekierowywania WOW64
SysArm32 jest usuwany z systemu Windows 11 na urządzeniach Arm
Zgodność jest ważniejsza niż bardziej zrozumiałe nazewnictwo
MS wyjaśnia, dlaczego Windows 11 przechowuje pliki 64-bitowe w System32, a 32-bitowe w SysWOW64
Czas: Oct, 20, 2026

Dlaczego Windows 11 przechowuje pliki 64-bitowe w System32, a pliki 32-bitowe w SysWOW64

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

MS nie oferuje 32-bitowej edycji systemu Windows 11, ale system operacyjny nadal musi obsługiwać 32-bitowe aplikacje rozwijane przez dziesięciolecia. Rozwiązanie opiera się na dwóch katalogach systemowych: System32 dla natywnych plików 64-bitowych oraz SysWOW64 dla plików 32-bitowych. Mechanizm przekierowywania systemu plików WOW64 automatycznie kieruje aplikacje 32-bitowe do SysWOW64, gdy próbują one uzyskać dostęp do System32.

Na komputerze z systemem Windows 11 26H2 oba katalogi zawierają plik o nazwie kernel32.dll. Pliki mają różne rozmiary, ponieważ jeden z nich jest przeznaczony dla aplikacji 64-bitowych, a drugi dla oprogramowania 32-bitowego.

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

Gdyby MS mógł zakończyć obsługę oprogramowania 32-bitowego, tak jak zrobiło to Apple, system Windows mógłby już nie potrzebować tej architektury zgodności. Jednak ogromna liczba istniejących aplikacji 32-bitowych znacznie utrudnia taką zmianę.

Dlaczego System32 zawiera pliki 64-bitowe

W czasach 16-bitowego systemu Windows pliki systemowe były przechowywane w katalogu C:\Windows\System. Gdy pojawił się 32-bitowy Windows, MS wprowadził katalog C:\Windows\System32 dla plików 32-bitowych, co wyjaśnia jego nazwę.

Do czasu opracowania 64-bitowego systemu Windows wiele aplikacji miało ścieżkę System32 wpisaną na stałe zamiast pobierać ją za pomocą funkcji GetSystemDirectory. Raymond Chen, wieloletni pracownik MSu, wyjaśnił, że po ponownym skompilowaniu tych aplikacji jako programów 64-bitowych nadal szukały one plików w System32, ale oczekiwały już znalezienia tam plików 64-bitowych.

Pliki wsadowe powodowały podobny problem ze zgodnością. Gdyby System32 nadal zawierał narzędzia 32-bitowe, skrypt uruchamiający System32\reg.exe zmodyfikowałby 32-bitowy widok rejestru zamiast oczekiwanej wersji 64-bitowej.

MS zdecydował więc, że System32 będzie zawierać pliki odpowiadające natywnej architekturze systemu operacyjnego. Dokumentacja mechanizmu przekierowywania systemu plików informuje, że katalog %windir%\System32 jest zarezerwowany dla aplikacji 64-bitowych w 64-bitowym systemie Windows.

Większość nazw bibliotek DLL również pozostała bez zmian, gdy MS tworzył ich wersje 64-bitowe. W rezultacie plik kernel32.dll—którego nazwa jest zgodna ze starszymi konwencjami nazewnictwa systemu MS-DOS—nosi nazwę kernel32.dll w obu lokalizacjach. Wersje 32-bitowe potrzebowały więc osobnego katalogu.

Chen zauważył, że liczba „32” w nazwie System32 jest obecnie po prostu częścią nazwy, a nie dokładnym opisem zawartości katalogu. Zasugerował, że w idealnie zaprojektowanym systemie folder mógłby nazywać się SysExec, ponieważ udostępnia pliki odpowiednie dla uruchamianego programu.

WOW64 oznacza „Windows 32-bit on Windows 64-bit”, czyli „32-bitowy Windows w 64-bitowym systemie Windows”. Jest to warstwa zgodności MSu przeznaczona dla aplikacji 32-bitowych. Liczba „64” w nazwie SysWOW64 odnosi się do systemu operacyjnego hosta, mimo że sam katalog zawiera pliki 32-bitowe. Jak na ironię, aplikacje 64-bitowe nie korzystają z folderu systemowego, który ma w nazwie liczbę „64”.

Jak Windows 11 przekierowuje aplikacje 32-bitowe do SysWOW64

Proces 32-bitowy nie może załadować 64-bitowej biblioteki DLL w celu jej wykonania, podobnie jak proces 64-bitowy nie może załadować 32-bitowej biblioteki DLL. Bez przekierowania aplikacja 32-bitowa żądająca pliku kernel32.dll z System32 otrzymałaby niezgodny plik.

W systemie Windows x64 WOW64 w sposób niewidoczny przekierowuje odpowiednie żądania systemu plików, gdy aplikacja 32-bitowa próbuje uzyskać dostęp do chronionej ścieżki System32. Aplikacja zazwyczaj nie jest świadoma, że ścieżka została zmieniona.

Można to zademonstrować, otwierając 32-bitowy Wiersz polecenia z pliku C:\Windows\SysWOW64\cmd.exe. W tym oknie polecenie echo %PROCESSOR_ARCHITECTURE% zwraca x86, podczas gdy standardowy 64-bitowy Wiersz polecenia zgłasza AMD64. Uruchomienie polecenia dir C:\Windows\System32\kernel32.dll w obu oknach wyświetla różne rozmiary plików, mimo że wpisano tę samą ścieżkę, ponieważ proces 32-bitowy zostaje przekierowany do kopii znajdującej się w 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

Nawet Matt Pietrek, będący wówczas członkiem zespołu MS Visual Studio, zetknął się z tym zachowaniem. W artykule opublikowanym w 2006 roku w magazynie MSDN opisał wyświetlanie informacji o pliku kernel32.dll w obu katalogach z poziomu 32-bitowego Wiersza polecenia i swoje początkowe zdziwienie, gdy wyniki wyglądały identycznie.

Działanie WOW64 wykracza poza przekierowywanie systemu plików. Za pośrednictwem mechanizmu przekierowywania rejestru zapewnia aplikacjom 32-bitowym osobny widok rejestru w lokalizacji HKEY_LOCAL_MACHINE\Software\Wow6432Node. Ustawia również ich zmienną środowiskową %ProgramFiles% na Program Files (x86).

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

MS zwraca uwagę na nietypowy wyjątek związany z funkcją Kontrola konta użytkownika. Jeśli otwarcie przekierowanego pliku powoduje wyświetlenie monitu UAC, przekierowanie nie następuje, a system Windows uruchamia zamiast tego wersję 64-bitową. W odpowiednich sytuacjach deweloperzy powinni więc podać ścieżkę SysWOW64 lub uruchomić aplikację 32-bitową jako administrator.

Korzystanie z wirtualnego katalogu Sysnative

Sysnative jest wirtualnym katalogiem dostępnym wyłącznie dla aplikacji 32-bitowych. Nie istnieje fizycznie w katalogu C:\Windows, a aplikacje 64-bitowe nie mogą uzyskać do niego dostępu. Wpisanie C:\Windows\Sysnative w pasku adresu 64-bitowego Eksploratora plików powoduje wyświetlenie błędu, natomiast polecenie dir C:\Windows\Sysnative\cmd.exe działa w 32-bitowym Wierszu polecenia.

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

Deweloperzy mogą wyłączyć przekierowywanie, wywołując funkcję Wow64DisableWow64FsRedirection, ale wpływa to na każdą operację na plikach wykonywaną w bieżącym wątku. MS ostrzega, że wyłączenie przekierowywania systemu plików może uniemożliwić ładowanie bibliotek DLL.

Chen opisał Sysnative jako „lokalne rozwiązanie lokalnego problemu”. Wcześniej radził deweloperom, aby nie próbowali walczyć z emulatorem, zalecając, by 32-bitowy instalator uruchamiał instalator 64-bitowy, gdy wymagane są natywne operacje 64-bitowe. Wiele problemów ze zgodnością pojawia się, gdy aplikacja 32-bitowa próbuje działać jak proces 64-bitowy.

Sześć folderów System32 jest wyłączonych z przekierowywania WOW64

MS wskazuje sześć podkatalogów System32, do których aplikacje 32-bitowe mogą uzyskiwać dostęp bez przekierowania. Lista wyjątków zmieniała się z czasem. Na przykład katalog driverstore był przekierowywany w systemach Windows Vista, Windows XP, Windows Server 2003 i Windows Server 2008.

MS nie wyjaśnia powodów wprowadzenia każdego z tych wyjątków. Niektóre z tych katalogów zawierają jednak współdzielone dane, do których zarówno aplikacje 32-bitowe, jak i 64-bitowe muszą mieć spójny dostęp, na przykład plik hosts w katalogu drivers\etc.

SysArm32 jest usuwany z systemu Windows 11 na urządzeniach Arm

Na komputerach opartych na architekturze Arm, takich jak laptopy ze Snapdragonem X, 32-bitowe aplikacje x86 również korzystają z SysWOW64. W przeszłości 32-bitowe aplikacje Arm były przekierowywane do trzeciego katalogu o nazwie SysArm32.

W systemach Arm64 WOW64 tłumaczy kod x86 za pośrednictwem emulatora o nazwie xtajit.dll. Dla porównania procesory x64 wykonują kod 32-bitowy natywnie, a plik Wow64Cpu.dll zarządza przełączaniem między trybami wykonywania, zgodnie z dokumentacją implementacji MSu.

Dokumentacja MSu dla deweloperów tworzących rozwiązania na platformę Arm informuje obecnie, że komputery Arm nie obsługują już 32-bitowych aplikacji Arm. Usuwane są również systemowe pliki binarne, które wcześniej były przechowywane w katalogu SysArm32. Standardowe aplikacje x86, zarówno w wersjach 32-bitowych, jak i 64-bitowych, nadal działają za pośrednictwem emulacji Prism, która w ubiegłym roku otrzymała obsługę AVX i AVX2.

Zgodność jest ważniejsza niż bardziej zrozumiałe nazewnictwo

MS mógł zmienić nazwę System32 dwie dekady temu, ale spowodowałoby to problemy z działaniem wielu istniejących aplikacji. Zamiast tego firma zbudowała wokół utrwalonej nazwy katalogu mechanizm przekierowywania, wirtualny alias oraz zestaw wyjątków. Odzwierciedla to podejście skoncentrowane na zgodności, dzięki któremu zachowano dla starszego oprogramowania takie elementy jak menedżer sterty systemu Windows 95.

Nie każda aplikacja przetrwała przejście na 64-bitowy system Windows, czego znanym przykładem jest 3D Pinball. Chociaż nazwa taka jak SysExec byłaby bardziej zrozumiała, przestarzała nazwa katalogu powoduje mniej szkód niż powszechne awarie aplikacji i instalatorów.

2
Live Chat