HKEY_CLASSES_ROOT does not contain contents of HKEY_CURRENT_USER

msiwindows-registry

I have an MSI installer which registers an ActiveX component. The registration info is written to the HKEY_CURRENT_USER hive, and all works fine and dandy.

For one user, however, IE is behaving as though the component is not registered. I've looked in the registry and the registration is there in HKCU. However, it doesn't appear in HKCR, which is really strange as that should be a merged view of HKCU\Software\Classes and HKLM\Software\Classes.

I've also noticed that the registration appears in

HK_USERS\<sid>\Software\Classes\CLSID\

but not in

HK_USERS\<sid>_Classes\CLSID\

The only way I can get it to work for her is to write the registration information to

HK_USERS\<sid>_Classes\CLSID\<GUID>\

at which point everything works perfectly.

Any ideas why this is?

Best Answer

I just resolved a problem with the exact same symptoms. The issue in this case was that the HKEY_USERS\[sid]\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders key was missing. This prevented Windows from locating the classes hive for that user. I have no idea how/why the key went missing.

Another symptom of this problem is that if you look under HKEY_USERS, you will see that the key HKEY_USERS\[sid]_classes is missing.

To fix it, just repair the missing key and reboot the machine. You can copy the good values from HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\User Shell Folders.