Re[6]: COM сервер в exe
От: Roman Ivanashko  
Дата: 07.05.04 15:15
Оценка:
RI>>Но для него надо чтобы под HKCR/Interface/{XXX} были кое-какие ключики, которых у меня не оказалось, судя по всему из-за того, что не для всех объектов rgs есть и поэтому tlb не регистрировалась.

SH>Это вряд ли. По идее tlb либо регестрится, либо нет, от rgs это зависеть не должно.


На самом деле, вроде, не совсем так.
Путём копания в недрах ATL выяснилось следующее:
Регистрация запускается при помощи CComModule::.RegisterServer(TRUE), которая собственно бежит по entries в ObjMap для модуля и вызывает для каждого объекта UpdateRegistryFromResource(IDR_XXX,...), только после этого регистрируется tlb(если надо), но только в том случае, если все предыдущие вызовы UpdateRegistry для каждого Entrie были успешны.
Сама регистрация осуществляется RegisterTypeLib().
Так как один rgs у меня был с ошибкой, то она ничего не говорила, но RegisterTypeLib не вызывала.
Собственно всё это можно увидеть в AtlModuleRegisterServer из ATLBase.h
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.