我想创build一个小应用程序来添加和删除registry中的用户定义的上下文菜单项。 为了做到这一点,我需要得到一个任意的DLL的CLSID,所以我可以备份以前的条目,如果它们存在之前写入新的。
虽然regsrv32
设法创造了这个神奇的号码,但我没有find任何方法来自己得到这个号码。
我希望有比这更好的东西:
如果DLL已经重新命名,我可以看到问题的可能性。
您可以考虑在指定REGKIND_NONE的DLL上调用LoadTypeLibEx,然后检查通过传回给您的ITypeLib接口获取TypeLibInfo信息。
有关于MSDN上的这种事情的一些信息。 这是一个旧的VB6为重点的链接,但有这样的检查COM组件的有用信息。
您可以尝试使用RegOverridePredefKey()截取regsvr32对注册表所做的操作 – 调用RegOverridePredefKey(),然后重新生成regsvr32所做的 – LoadLibrary()COM服务器,调用DllRegisterserver() – 然后检查所做的更改。 使用RegOverridePredefKey(),您将隔离更改,而不是让它们变成持久的。