В моем методе DllRegisterServer моей COM-dll у меня ранее был код, который называл LoadTypeLibEx (module, REGKIND_REGISTER, & pTypeLib) для регистрации моих COM-классов и соответствующих им TypeLib. Моя COM-DLL - 64-разрядная. Я заметил, что в моей 64-битной системе Vista в разделе HKCR: \\ TypeLib \ {myguid} \ 1.0 \ 0 я нахожу подраздел win32 с местоположением моей COM DLL.
У меня также есть другой код в отдельной COM-DLL, которую я поддерживаю, которая использует старый, теперь устаревший вызов CComModule.RegisterServer (TRUE). Этот код создает подраздел win64 под ключом 0 для 64-битной DLL и подраздел win32 под ключом 0 для 32-битной DLL. Я использую правильную разрядную версию regsvr32 для выполнения регистрации во всех случаях (соответствие разрядности regsvr32 разрядности DLL).
Почему LoadTypeLibEx и _AtlComModule.RegisterServer не создают ключ win64 для 64-разрядной библиотеки DLL, содержащей мою TypeLib, в то время как более старый CComModule.RegisterServer создает правильные ключи?