修复损坏的COM注册的正确方法是什么?

时间:2011-01-12 19:36:00

标签: com activex dll

我们有一个包含2个ActiveX控件的.ocx文件。有一件事导致另一件事......现在我们陷入了“地狱”。一个控件在包含的应用程序中加载正常,另一个控件(已修改的控件)无法完全加载。毫无疑问,因为我们broke compatibility通过更改几个事件和方法签名。 (应该教我们在注册新的.ocx之前取消注册。)

过去我记得不得不进入注册表并手动从HKCR\TypeLib删除重要的条目,但这是可怕的东西。普遍接受的解决方案是什么?

1 个答案:

答案 0 :(得分:1)

如果您的COM注册确实被破坏,我知道解决它的唯一方法是在注册表中搜索相关的CLSID并删除所有对它的引用。

是的,这有点危险;这就是为什么activex控件应该安全地注册自己,以及为什么MS现在建议使用MSI进行安装而不在安装过程中执行selfreg(regsvr32)。一旦某些东西搞砸了系统,修复它可能会很痛苦。

但是,如果您找出相关的CLSID(每个控件和类型库的CLSID)并仅删除引用它们的内容,那么您应该没问题;为安全起见,请在开始之前设置系统还原点。

祝你好运