3

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?

2 Answers 2

7

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.

12
  • 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? Aug 20, 2010 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, 2010 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, 2010 at 9:42
  • 2
    Indeed, those that don't use the %ProgramFiles% environment variable cannot be automagically redirected by Windows.
    – DMA57361
    Aug 20, 2010 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, 2010 at 11:50
4

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.

1
  • 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, 2010 at 17:30

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .