获取DLL文件的CLSID?

use*_*987 11 windows com dll clsid

我想创建一个小应用程序来添加和删除注册表中的用户定义的上下文菜单项.为了实现这一点,我需要以某种方式获取任意DLL的CLSID,以便在写入新条目之前,如果它们存在,我可以备份它们.

虽然regsrv32不知怎的设法创造了这个神奇的数字,但我没有找到任何办法自己获得这个数字.

我希望有比这更好的东西:

  1. 扫描DLL名称的注册表
  2. 如果未找到,请注册,再次扫描,然后再次注销

如果DLL已重命名,我可以看到出现问题的可能性.

Tre*_*ins 4

您可以考虑在指定 REGKIND_NONE 的 DLL 上调用LoadTypeLibEx ,然后检查通过传回给您的ITypeLib接口获取可用的TypeLibInfo信息。

MSDN上有一些关于此类事情的信息。这是一个以 VB6 为重点的旧链接,但包含有关以这种方式检查 COM 组件的有用信息。