Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何注销/删除在注册表中创建的所有COM项_C#_Com_Regasm - Fatal编程技术网

C# 如何注销/删除在注册表中创建的所有COM项

C# 如何注销/删除在注册表中创建的所有COM项,c#,com,regasm,C#,Com,Regasm,如何删除ProgID(“Log.Main”)注册表中注册的所有COM项 我有一个COM组件,它是使用regasm注册的,现在我可以在注册表中的CLSIDs(“Log.Main”)下看到这个COM组件的多个类ID(使用oleview.exe) 我想使用C#从注册表中删除与此COM组件(ProgID为'Log.Main')相关的所有条目,或者是否有其他可用的注册表清理工具。除非您仍然拥有原始组件,否则这通常是不可能的。ProgId只提供Classes注册表项中的条目CLSID{guid}。您将无法在

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

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


我想使用C#从注册表中删除与此COM组件(ProgID为'Log.Main')相关的所有条目,或者是否有其他可用的注册表清理工具。

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

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

如果由于某种原因这是不实际的,那么您可以通过显式地使用[Guid]属性来减轻压力,这样类型库、接口和类Guid总是相同的。但是,在调试和测试完组件后,再次删除它们是非常非常重要的,否则在进行更改时,您将面临非常严重的DLL崩溃风险。强烈支持MSBuild自动为您执行此操作