Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Exactly what is the difference between:

C:\Program Files
C:\Program Files (x86)
C:\ProgramData

I have two questions:

  1. Why are they different?
  2. How do I decide which one to look in for any given resource, to avoid having to look in them all and merge the information in my head?
share|improve this question

2 Answers 2

Briefly

Program Files is where 64bit software is installed.

Program Files (x86) is where 32bit software is installed.

Program Data is where both sets of programs should write data (such as configuration data, for example) that they want to store for all users (so can't go in a single users AppData or MyDocs) and that does not belong in registry.


The difference between the two ProgFiles folders allows you to have two different versions of software installed (for example Internet Explorer comes in both 32 and 64 bit flavors installed together) because Windows silently redirects requests from software in the (x86) folders.


As for question 2, you can probably ignore Program Data most of the time (nothing should be installed in there), but I often find myself jumping between the two ProgFiles folders so I'll be looking for other answers here to help with that.

share|improve this answer
    
Is there any reason why 64-bit software and 32-bit software had to be split in this way? I mean, it's just files on the disk, isn't it? –  Neil Barnwell Aug 20 '10 at 9:32
    
No idea! I've heard it's for compatability reasons. But all my 32bit and 64bit games (not many in the latter category) are installed in C:\Games and I have not problems with either. Plus I've loads of utilities I run straight off my D:. –  DMA57361 Aug 20 '10 at 9:34
3  
It's important for some programs! Some compilers, Integrated Development Environments and similar programs have need for both 32bit version and 64 bit version. It's not uncommon to find 64 bit in Program Files and 32 in Program Files (x86). Still, there is no need for directories o be called like that. They may as well be called a and b. It's just that x86 hints at its contents. –  AndrejaKo Aug 20 '10 at 9:42
2  
Indeed, those that don't use the %ProgramFiles% environment variable cannot be automagically redirected by Windows. –  DMA57361 Aug 20 '10 at 9:56
1  
This blog post gives quite good explanation of the various 16/32/64-bit folders: piers7.blogspot.com/2010/07/64-bit-explained.html –  petergil Aug 20 '10 at 11:50

Like @DMA57361 said, on Windows Vista x64, Program Files is where x64 software is installed, and Program Files (x86) is where x86 software is installed.

Windows (x64 versions) categorizes software this way due to a feature (for the Windows Installer Installation Cotext) called Folder redirection. Windows (x64 versions) have this feature probably beacause that's the way they can still support and categorize x86 applications.

About the second question, the "C:\ProgramData" is a folder that stores user related information that is shared by all accounts.

share|improve this answer
    
Good link. I've run out of votes for today, but I'll try to remember to come back and give you a +1 tomorrow! –  DMA57361 Aug 20 '10 at 17:30
    
@DMA57361 thanks. –  Mario Aug 20 '10 at 19:08

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.