Cabe destacar que esto es un poco más complicado en las versiones de 64 bits de Windows. System sigue siendo una referencia para ejecutables de 16 bit pero, ahora System32 contiene ejecutables de 64 bits mientras que SySWOW64 contiene los de 32 bits.
En Windows 10 64 bits,
Si me voy a %SystemRoot%/System32 y abro el
diskpart.exe veré que tiene el header
PE d† lo cual indica que es un programa de X64.
Si me voy a %SystemRoot%/SysWOW64 y abro el
diskpart.exe veré que el tiene el header
PE L el cual indica que es un programa X86.
Va un poco al revés la cosa, pero la culpa realmente es de desarrolladores de terceros que hardcodearon las rutas de sus programas. Windows tiene una API la cual todo el mundo debería utilizar. Las funciones como
SHGetKnownFolderPath() y
GetSystemDirectory() están ahí para darte la dirección correcta a usar cuando necesitas algo. Sin embargo, muchos programadores prefieren hardcodear las rutas y cuando salieron las versiones de 64 bits y les toco actualizar sus programas, no cambiaron las rutas.. así que sus programas, buscaban librerías y ejecutables de 64 bits en el directorio que se supone que es de 32 bits. Microsoft decidió entonces que todo lo relacionado a 64 bit estaría en System32 y todo lo relacionado a 32 bit estaría en SySWOW64.
Cosas de mala organización y malas practicas.
Saludos