我如何注销/删除注册表中创建的所有COM条目



如何删除ProgID("Log.Main")注册表中注册的所有COM项

我有一个使用regasm注册的COM组件,现在我可以在注册表("Log.Main")的clsid下看到这个COM组件的多个类id(使用oleview.exe)。

我想删除与ProgID 'Log的COM组件相关的所有条目。

这通常是不可能的,除非您仍然拥有原始组件。ProgId只提供Classes注册表项中的条目,CLSID {guid}。您将无法在TypeLibInterface注册表项中找到条目,因为您不知道它们的{guid}。

为了避免注册表污染,在重新构建组件之前先取消注册是非常重要的。这是由MSBuild自动完成的,当你使用"注册COM互操作"选项,可在一个。net项目的项目+构建选项卡属性页。你需要运行VS提升,这样MSBuild就可以与注册表一起运行,右键单击快捷方式并选择以管理员身份运行。

如果由于某些原因这是不实际的,那么你可以通过显式地使用[Guid]属性来找到一些缓解,这样类型库,接口和类的Guid总是相同的。然而,当你完成调试和测试组件时,再次删除它们是非常非常重要的,否则当你进行更改时,你会冒非常严重的DLL地狱的风险。强烈建议MSBuild为您自动执行此操作。

最新更新