In my DllRegisterServer method of my COM dll, I previously had code that called LoadTypeLibEx(module, REGKIND_REGISTER, &pTypeLib) to register my COM classes and their corresponding TypeLib's. My COM DLL is a 64-bit. I've noticed that on my 64-bit Vista system, under HKCR:\\TypeLib\{myguid}\1.0\0 I find a win32 subkey with the location to my COM DLL.
I also have some other code in a seperate COM DLL that I support that uses the older, now deprecated CComModule.RegisterServer(TRUE) call. This code creates a win64 subkey under the 0 key for a 64-bit DLL and a win32 subkey under the 0 key for a 32-bit DLL. I am using the correct bit version of regsvr32 to do the registration in all cases (matching the regsvr32 bitness to DLL bitness).
Why does LoadTypeLibEx and _AtlComModule.RegisterServer both not create the win64 key for a 64-bit dll containing my TypeLib while the older CComModule.RegisterServer creates the correct keys?