gpt4 book ai didi

c# - 如何取消注册/删除在注册表中创建的所有 COM 条目

转载 作者:行者123 更新时间:2023-11-30 16:10:43 25 4
gpt4 key购买 nike

如何删除在注册表中为 ProgID("Log.Main") 注册的所有 COM 条目。

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

我想使用 C# 从注册表中删除与 ProgID 为“Log.Main”的此 COM 组件相关的所有条目,或者是否有除注册表清理器之外的任何可用工具。

最佳答案

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

为避免注册表污染,在重建它之前先注销该组件非常重要。当您使用“注册 COM 互操作”选项时,MSBuild 会自动完成此操作,该选项在“项目 + 生成”选项卡属性页上的 .NET 项目中可用。由于您需要运行 VS 提升以便 MSBuild 可以使用寄存器的怪癖,右键单击快捷方式并选择以管理员身份运行。

如果由于某种原因这不切实际,那么您可以通过显式使用 [Guid] 属性找到一些缓解方法,这样类型库、接口(interface)和类 guid 始终相同。然而,当您完成组件的调试和测试后再次删除它们是非常非常重要的,否则您在进行更改时会面临非常严重的 DLL hell 风险。强烈支持 MSBuild 自动为您执行此操作。

关于c# - 如何取消注册/删除在注册表中创建的所有 COM 条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25339051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com