Are 'C:\ProgramData' and 'C:\Users\All Users' the same? Do I need both?

Solution 1:

Only C:\ProgramData actually exists as a "real" folder. C:\Users\All Users is a symbolic link to C:\ProgramData. That is, C:\Users\All Users points to C:\ProgramData, so if you navigate to the former, you are automatically redirected to the latter. That is why they appear identical.

C:\ProgramData is known as the "All Users Profile" and is required for the correct operation of Windows 7. Please do not delete it, if Windows even lets you.

C:\Users\All Users is there for backward compatibility. Poorly-written applications do not retrieve the path of the All Users Profile correctly. They say, "Windows, give me the name of the profiles directory." Windows says, "C:\Users." And the program says, "Okay, I know the All Users profile is called All Users and it's inside the profiles directory, so it must be C:\Users\All Users." Really, what the program should say to Windows is, "Windows, give me the path of the all users profile," to which Windows would say, "C:\ProgramData."

Solution 2:

They are the same folder. Users\All Users is a junction to \ProgramData. From Application Compatibility: Junction Points and Backup Applications:

All Users legacy folder junction requirements: 

Sym links creation location     Destination  
..\Users\All Users              ..\ProgramData

Users\All Users is a link to the ProgramData folder for legacy reasons. It is a junction point (symlink in the UNIX world) and not a copy of the data. I have only the ProgramData folder on my Windows 7 (x64) computer. My guess it is safe to delete the junction point, but not necessary. I don't recommend deleting ProgramData.