\Program Files vs. \Program Files (x86) in 64-Bit Windows

It's not just for human readability, there are many programmatic reasons to separate 32-bit apps from 64-bit. Consider the "Common Files" folder. If you have a 32-bit app and 64-bit app that use the Common Files folder for a file with the same name, you're going to hose whichever one was installed first. There are also differences in how Windows presents these folders to the apps themselves, though I'm not familiar enough with them to explain them well.

Finally, this is the first of many steps in the move to universally native 64-bit apps. Presenting the folders differently keeps the distinction visible to developers and users alike, and 32-bit "Program Files (x86)" is the odd man out.


As you wrote in your question these folders are distinguished default setup directories for 32bit and 64bit applications.

An interesting hybrid setup is SQL Server 2005: if you install install the 64bit version, the main SQL engine files will be copied under the Program Files folder, the tools, which are 32bit-only will be installed in the "Program Files (x86)"


You mentioned the reason: to distinguish 32-bit program files from 64-bit program files. When you run a 32-bit program on a 64-bit Windows installation, Windows redirects folder requests from that program for %ProgramFiles% [C:\Program Files in the English language version] to the x86 alternative [C:\Program Files (x86)]. Because of this silent redirection, 64-bit and 32-bit programs can coexist without interfering with each other. (For example, 64-bit Windows includes both 64-bit and 32-bit versions of Internet Explorer.) Windows also performs similar redirections for its own files and for registry keys.