Да и нет.
Насколько я знаю, нет никакого общего способа получить ProgIDs из typelib или COM-сервера.
Точкой входа для DLL является DllRegisterServer
, которая должна записывать регистрационную информацию в реестр, а для серверов EXE они обычно имеют аргумент командной строки, который имеет то же значение.
Библиотеки типов содержат описание всех интерфейсов и коклассов в компоненте, но они редко содержат удобочитаемый ProgID.
Единственный ясный способ, который я могу видеть и рекомендовать, - это переопределить ключ HKCR \ CLSID, чтобы временно указать куда-нибудь, а затем вызвать DllRegisterServer
. Поскольку переопределения разделов реестра являются локальными для процессов, это будет работать только для внутрипроцессных (DLL) серверов.
См. http://msdn.microsoft.com/en-us/library/ms724901(v=VS.85).aspx для получения информации о переопределении ключей реестра.
Затем проверьте рабочий реестр и посмотрите, какие изменения были внесены, например, CLSID <-> сопоставления ProgID, модель потоков и т. Д.