cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
datamine
Level 6

Interface registry entries not reflected

Hi

I have a basic MSI project in which we include a .reg file to set up COM entries for a particular 32-bit component. Since the advent of Windows 7, registry reflection has been disabled so these entries always appear under HKEY_CLASSES_ROOT\Wow6432Node and not under HKEY_CLASSES_ROOT as they did before. However, certain apps do not recognise the component as registered unless they are under HKEY_CLASSES_ROOT, which is where they appear if the component is registered manually. I have tried (and so far failed) to force these entries to be set under HKEY_CLASSES_ROOT by default. I've tried setting "Disable Registry Reflection", some InstallScript to set REGDB_OPTIONS but neither of these make any difference, and I really don't want to have to resort to making the component self-register. Does anyone know of a method I can use to force these entries into the right place?
Labels (1)
0 Kudos
(4) Replies
ch_eng
Level 7

datamine,

In my InstallScript MSI projects, I have used "REGDB_OPTION_WOW64_64KEY" to read from the 64bit section of the registry (non-Wow6432Node). Example:

//look in 64-bit section
REGDB_OPTIONS = REGDB_OPTIONS | REGDB_OPTION_WOW64_64KEY;
svTemp = "";
RegDBGetKeyValueEx( "SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v4\\Client",
"Version",
nvType,
svTemp,
nvSize );
// back to looking in Wow6432Node section
REGDB_OPTIONS = REGDB_OPTIONS & ~REGDB_OPTION_WOW64_64KEY;


That works for HKEY_LOCAL_MACHINE, I don't know why it wouldn't work for HKEY_CLASSES_ROOT.

HTH
0 Kudos
datamine
Level 6

Thanks for the reply 🙂

I tried a custom InstallScript action which sets REGDB_OPTIONS in this way, just before WriteRegistryValues (which I assume will write the contents of the Registry table) but the result is the same unfortunately. I could probably achieve the desired effect entirely in InstallScript but that defeats the object (and flexibility) of merging a .reg file at build time, there are too many entries to add in script.
0 Kudos
datamine
Level 6

It turns out this was a red herring, it works fine when the entries are in Wow6432Node after all, there were just a few missing.
0 Kudos
ch_eng
Level 7

Glad you figured it out!
0 Kudos