Why Windows 11 keeps 64-bit files in System32 and 32-bit files in SysWOW64, according to Microsoft

Microsoft’s approach to maintaining compatibility with legacy applications on Windows 11 is a fascinating blend of innovation and nostalgia. While the company has opted not to produce a 32-bit edition of Windows 11, it still recognizes the importance of supporting a vast array of 32-bit applications that have been in use for decades. To navigate this challenge, Microsoft has ingeniously implemented two distinct system folders: System32 for 64-bit files and SysWOW64 for their 32-bit counterparts. This setup is complemented by the WOW64 file system redirector, which seamlessly directs 32-bit applications to SysWOW64 when they request access to System32.

On a Windows 11 26H2 system, both folders contain a version of kernel32.dll, yet the files differ in size, reflecting their respective architectures. This clever arrangement raises an interesting hypothetical: what if Microsoft decided to follow Apple’s lead and discontinue support for 32-bit software? Such a move could potentially lighten the load of legacy baggage that Windows carries.

Why System32 has 64-bit files and SysWOW64 has 32-bit ones

The history of these folders dates back to the early days of Windows. Initially, system files were housed in C:WindowsSystem. With the advent of 32-bit Windows, Microsoft introduced C:WindowsSystem32 for 32-bit files, hence the “32” designation. However, when 64-bit Windows emerged, many programs had hard-coded paths pointing to System32, expecting to find 32-bit files. As explained by Microsoft veteran Raymond Chen, this created a dilemma: recompiled 64-bit applications still sought out System32, now anticipating 64-bit files. Consequently, the Windows team resolved that System32 would contain files corresponding to the operating system’s architecture, while the WOW64 documentation clarifies that “The %windir%System32 directory is reserved for 64-bit applications on 64-bit Windows.”

Interestingly, most dynamic link libraries (DLLs) retained their original names during the transition to 64-bit, leading to the peculiar situation where kernel32.dll exists in both folders, albeit with different file sizes. Chen humorously noted that the “32” in the folder name is merely a relic, akin to brands like KFC and HSBC that are known by their initials today. In a more ideal scenario, he suggested that the folder could have been aptly named SysExec, as it contains files that match the running application.

How Windows 11 quietly redirects 32-bit apps to SysWOW64

Microsoft’s guide on running 32-bit applications reveals that a 32-bit process cannot load a 64-bit DLL, which underscores the necessity of the WOW64 redirection. This mechanism operates discreetly, redirecting requests from 32-bit applications for System32 to SysWOW64, ensuring compatibility without the user’s awareness.

What a 32-bit app asks for Where 64-bit Windows sends it
C:WindowsSystem32 C:WindowsSysWOW64
C:Windowslastgoodsystem32 C:WindowslastgoodSysWOW64
C:Windowsregedit.exe C:WindowsSysWOW64regedit.exe

This redirection is so seamless that even seasoned developers, like Matt Pietrek, have been caught off guard by the apparent duplication of kernel32.dll in both folders. The WOW64 layer also provides 32-bit applications with their own registry view under HKEYLOCALMACHINESoftwareWow6432Node and adjusts the %ProgramFiles% variable to point to Program Files (x86).

However, there are exceptions. If a redirected file prompts a User Account Control (UAC) alert, Microsoft specifies that redirection does not occur, and the 64-bit version is launched instead. Developers are advised to utilize the SysWOW64 path or run the 32-bit application with administrative privileges to avoid complications.

Moreover, the Sysnative virtual folder, which is not visible in C:Windows, serves as a unique solution for 32-bit applications. While 64-bit applications cannot access it, a 32-bit Command Prompt can successfully navigate to it, demonstrating the intricacies of this compatibility layer.

Six System32 folders are exempt from WOW64 redirection

Interestingly, Microsoft has identified six subfolders within System32 that 32-bit applications can access without redirection:

  • C:WindowsSystem32catroot
  • C:WindowsSystem32catroot2
  • C:WindowsSystem32driverstore
  • C:WindowsSystem32driversetc
  • C:WindowsSystem32logfiles
  • C:WindowsSystem32spool

While the rationale behind these exemptions remains unclear, it is speculated that these folders contain shared data essential for both application types, such as the hosts file located in driversetc.

SysArm32 is going away on Windows 11 Arm PCs

In a further evolution of its compatibility strategy, Microsoft has announced that 32-bit Arm applications will no longer be supported on Arm PCs, such as those powered by Snapdragon processors. Previously, these applications were directed to a separate folder called SysArm32. With the removal of system binaries from this folder, only x86 applications—both 32-bit and 64-bit—will continue to operate through Prism emulation, which has recently received enhancements for AVX and AVX2 support.

Microsoft’s decision to maintain the System32 nomenclature rather than renaming it reflects a commitment to preserving legacy support while implementing a robust redirector system. This approach has allowed the company to avoid breaking countless applications, demonstrating a thoughtful balance between innovation and continuity in the ever-evolving landscape of computing.

Winsage
Why Windows 11 keeps 64-bit files in System32 and 32-bit files in SysWOW64, according to Microsoft