当/ u arg不起作用时,如何取消注册最初使用RegSvr32添加的COM dll?


13

右键,在最初运行:

c:\regsvr32 Amazing.dll 

然后,(意外 - 我可以补充)我必须再次运行它,(确实)时再“Amazing.dll”的新版本发布。是的 - 我知道现在应该已经运行:

c:\regsvr32 /u Amazing.dll 

预先 - 但嘿!我忘了。要在VS中添加COM参考,我可以看到3个'Amazing'实例都指向同一个位置(c:\ Amazing.dll),运行regsvr32 /u删除了其中一个引用,第二次 - 什么都不做......

我该如何摆脱这些引用? 我在看reregit场景吗? - 如果是这样 - 如果我删除其中一个键,会发生什么 ???

干杯

14

你的对象的GUID不应该改变。换句话说,一旦你注册了COM对象,重新注册不应该在注册表中增加额外的东西。

除非您将其他COM接口或对象添加到项目中。

在任何情况下,如果这是一次性交易(听起来像是这样),请打开注册表并手动删除不需要的密钥。


0

之前我让自己陷入到一种可怕的混乱与COM。不幸的是,我不得不通过注册表删除每个引用来选择我的方式。


4

MS还有一个工具,它仍然漂浮在Win95天之后,它扫描注册表并执行诸如发现COM键等不指向有效文件等的所谓的RegClean等(我在这里找到它: http://downloads.zdnet.com/abstract.aspx?assetid=881470&node=2094)我已经看到一些地方仍然使用特别是当在VB中的遗留COM东西,这些东西在每次构建后都会生成新的COM GUID。

所以,如果你有这个,然后取消注册并删除或移动文件,运行应用程序,它会清除“孤儿”条目。

如果您决定使用RegEdit删除键,则可能需要删除类id以及guid条目。