C# 从注册表中完全删除COM DLL

C# 从注册表中完全删除COM DLL,c#,dll,registry,C#,Dll,Registry,从注册表中完全删除COM DLL的正确方法是什么 我正在试验开发一个C#COM DLL。我从Excel VBA给他们打电话。我已经开发了许多DLL(~15个),大部分都取得了巨大的成功。当您注册一个DLL时,它会在注册表中放置条目。我有一个非常简单的DLL,有一个类和一个接口,它创建了15个注册表项(5个用于DLL,7个用于接口,3个用于类)。我想完全删除DLL。使用ragasm/u注销时,它只删除与类相关的条目,并保留接口和DLL条目 如果我聪明的话,我会用一个通用的第一部分创建guid,这样

从注册表中完全删除COM DLL的正确方法是什么

我正在试验开发一个C#COM DLL。我从Excel VBA给他们打电话。我已经开发了许多DLL(~15个),大部分都取得了巨大的成功。当您注册一个DLL时,它会在注册表中放置条目。我有一个非常简单的DLL,有一个类和一个接口,它创建了15个注册表项(5个用于DLL,7个用于接口,3个用于类)。我想完全删除DLL。使用ragasm/u注销时,它只删除与类相关的条目,并保留接口和DLL条目

如果我聪明的话,我会用一个通用的第一部分创建guid,这样就可以很容易地编写一个批处理脚本来删除所有实验性dll或某个特定的dll


我已经在.tlb文件上手动运行了oleview来获取所有的guid,并且手动搜索注册表并创建了一个批处理脚本(.bat)来删除它们。非常乏味。我想让这个过程自动化。在我这么做之前,因为这是一个常见的问题,也许有人做过,或者知道一个好的方法来做。

我理解你想要“整洁”,但不认为值得你花时间担心这一点。Regsvr32/u应删除必要的内容,以便dll不再是可共同创建的。另外,调整GUID使其“匹配”也不是一个好主意。将GUID创建留给MSFT提供的工具。@edtheprogrammerguy,您应该将其作为一个答案发布。最好的方法是在开始构建新版本的DLL之前自动删除该DLL。项目>属性>生成选项卡,选中“注册COM互操作”复选框。VS必须运行提升,以便可以更改注册表。事后清理很麻烦,因为您将不再拥有正确版本的DLL。使用/u/tlb还可以删除类型库和接口键。使用regasm/u/tlb xxxxxxxxxxxx.dll会显示此命令,以完全删除dll。使用regasm/u xxxxxxxx.dll仅删除类GUID,并保留dll GUID和接口GUID。这是没有记录或我找不到它提到。