Com 列出OLE自动化服务器的所有对象

Com 列出OLE自动化服务器的所有对象,com,ole,typelib,Com,Ole,Typelib,如果我知道OLE自动化服务器的名称(如HKEY_CLASSES_ROOT下所示),是否有任何方法可以查询所有可用对象、它们的方法和属性,即使该服务器不支持早期绑定,因此无法在对象浏览器中找到 如果是的话,你能提供几行代码(更喜欢VB,但实际上并不重要)如何做到这一点 如果服务器有关联的。否则,就没有办法了 如果TLB id(它也是一个guid)引用作为注册表项TypeLib的默认值存在,您可以在以下位置找到它: HKCR\CLSID\<your CLSID>\TypeLib HKC

如果我知道OLE自动化服务器的名称(如HKEY_CLASSES_ROOT下所示),是否有任何方法可以查询所有可用对象、它们的方法和属性,即使该服务器不支持早期绑定,因此无法在对象浏览器中找到


如果是的话,你能提供几行代码(更喜欢VB,但实际上并不重要)如何做到这一点

如果服务器有关联的。否则,就没有办法了

如果TLB id(它也是一个guid)引用作为注册表项TypeLib的默认值存在,您可以在以下位置找到它:

HKCR\CLSID\<your CLSID>\TypeLib
HKCR\CLSID\\TypeLib
然后,TypeLib id指向

HKCR\TypeLib\<tlb id>
HKCR\TypeLib\
您可以在下面的键中找到TLB路径(取决于体系结构,在x86或x64上可能有所不同)

例如,以下是标准ADO的2.6(ActiveX数据对象)类型库的路径:


一旦有了TLB,就可以使用COM的API来浏览它。C++或本地客户端都可以,但是对于自动化客户端,如VB、VBScript等,有一个DLL“TLBIf32.DLL”允许您这样做。这里有一个关于它的链接:

感谢您澄清这一点。我是否正确地得出结论,如果存在自动化服务器,那么总会有一个TLB,只是开发人员可能决定不(向所有人)发布它?不总是因为它不是严格必需的,COM在其最低级别只是服务器和客户机共享的一个VTable二进制契约,但大多数情况下,因为工具(例如MIDL)就是这样。