Когда я зарегистрировать DLL COM, запустив regsvr32 MyCOMdll.dll
в CMD я вижу несколько записей, созданных в реестре, один из них:Где Clsid происходит от при регистрации COM
[HKEY_CLASSES_ROOT\MyCOMdll.MyClass\Clsid]
@="{DB402D5A-5584-4F68-A750-45D3E8133121}"
Я хотел бы понять, где происходит от DB402D5A-5584-4F68-A750-45D3E8133121
, изначально я думал, что GUID сгенерирован в момент регистрации этой DLL, однако я проверил это в разных средах, и я вижу, что он имеет такое же значение. Похоже, что эти GUID встроены в DLL, но я не могу подтвердить или узнать, в какой точке.
Контекст: Я хочу выполнить «горячую замену» этого COM, однако это не кажется простым. Я пытался обновлять GUID в реестре после регистрации новой DLL, но получаю ошибку ClassFactory cannot supply requested class
.
Это ваш код, который записывает эти ключи. Однако вы внедрили функцию DllRegisterServer(). Как правило, скрывается полезная библиотека классов. Если это, скажем, ATL, то это происходит из автоматически сгенерированного файла .rgs, созданного мастером класса. Все возможно, не говоря о том, что вы использовали, не позволяет точно ответить. –