При создании COM объекта в папке проекта Вы можете найти RGS файл. Этот файл автоматически генерируется VC++.
Создается в момент создания COM класса для того, что бы в последствии прикомпилироваться к проекту и использоваться для регистрации компонента, и отмены регистрации кстати то же. Вы можете открыть его в блокноте для просмотра вот его содержание
HKCR { NoRemove AppID { {3A3C4EA2-96DC-11D5-B617-0010B5DAD65E} = s 'NetRunning' 'NetRunning.EXE' { val AppID = s {3A3C4EA2-96DC-11D5-B617-0010B5DAD65E} } } }
В него можно вносить изменения которые будут сохранены. HKCR это HKEY_CLASSES_ROOT. Именно сюда будут заноситься записи. А дальше каждая скобка это как ведь в дереве. Странное слово NoRemove означает нечего не удалять при занесении новых записей. При создании COM DLL структура его более сложная:
HKCR { TestDll.CCC.1 = s 'CCC Class' { CLSID = s '{CE24192E-97D8-11D5-B617-0010B5DAD65E}' } TestDll.CCC = s 'CCC Class' { CLSID = s '{CE24192E-97D8-11D5-B617-0010B5DAD65E}' CurVer = s 'TestDll.CCC.1' } NoRemove CLSID { ForceRemove {CE24192E-97D8-11D5-B617-0010B5DAD65E} = s 'CCC Class' { ProgID = s 'TestDll.CCC.1' VersionIndependentProgID = s 'TestDll.CCC' ForceRemove 'Programmable' InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' } 'TypeLib' = s '{CE241921-97D8-11D5-B617-0010B5DAD65E}' } } }
ForceRemove означает все удалять.
Вообщем этот файл с информацией для регистрации. Именно с его помощью Regsvr для DLL или ключ /regserver извлекают информацию в реестр. И вы можете менять этот файл для занесения специфической информации в реестр. Например если DLL будeт использоваться для DCOM.