Why does Windows put 64-bit units into System32?

The WoW64 (Windows on Windows 64) subsystem uses the register redirection and file system redirection mechanisms for 32-bit programs launched in 64-bit Windows versions while 64-bit system libraries are still stored in the folder "%windir%\system32". What is the reason for this? It would be more logical to assign the path "%windir%\system32" to 32-bit programs and, let's say, "%windir%\system64" to 64-bit ones?

Alexey Pahunov, Microsoft employee who participated in creation of WoW64, writes in his blog that it was done to simplify porting of applications to the 64-bit platform. The names of the register keys and directories used by an application are very often stored as text constants in the program code despite the fact that paths to most system folders may (and must) be obtained with the help of the functions GetSystemDirectory, GetWindowsDirectory and the like. These text constants will remain unchanged when recompiling an existing application for the 64-bit platform. Since mere recompilation is usually not enough to move to the 64-bit platform (there appear errors related to inaccurate adherence to Microsoft recommendations concerning the use of Windows API), Microsoft tried to make this move as smooth as possible making programmers free of the necessity to search for and replace a great many string constants in all the applications being ported.


Use PVS-Studio to search for bugs in C, C++, C# and Java code

We offer you to check your project code with PVS-Studio. Just one bug found in the project will show you the benefits of the static code analysis methodology better than a dozen of the articles.

goto PVS-Studio;

Bugs Found

Checked Projects
Collected Errors
12 668