Where is the Default Program associations stored in the registry? [duplicate]

If I run the assoc command-line utility for an extension, it shows the file type/description for the extension I set in the registry. But if I go to Control Panel -> Default Programs - Set Associations then I see a different description and default program.

It used to be that setting the two keys:

  • HKCR\.ext (default) = Identifier
  • Identifier (default) = "File Description"
    • \DefaultIcon (default) = Some icon
    • \Shell\Open\Command (default) = Some editor

But now it appears there is an override elsewhere, which is what gets displayed in the Default Programs listing.

My question is, where i this overridden association information stored? I'm assuming it is in the registry, but I don't see it in the keys I expect it to be. I believe this was changed in the Vista time frame, but it may have been in XP too.

Update: Since there is some confusion, do the following test. Rename a file to some new extension. Create an association in the registry keys mentioned above. Then right click on the file, Open With and select a different program (checking to make it the default). Now check the registry. It is unchanged, but now the file is associated with a different description, icon and default program.


Should be in:

HKEY_LOCAL_MACHINE\SOFTWARE\Classes and HKCU\SOFTWARE\Classes

And I don't believe that this has changed recently.

The priority is for current user, then local machine (aliased I believe to classes root).

Explorer uses a different set of registry keys that can be found at:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\