/ u arg不起作用时,如何注销最初添加到RegSvr32的COM dll?

时间:2020-03-05 18:41:28  来源:igfitidea点击:

是的,最初运行:

c:\regsvr32 Amazing.dll

然后,(偶然我可能会添加)我必须再次运行它,并且(确实)必须在发布新版本的" Amazing.dll"时再次运行它。是的,我知道我应该跑步:

c:\regsvr32 /u Amazing.dll

事先但嘿!我忘了。

顺带一提,在VS中添加COM引用时,我可以看到3个" Amazing"实例都指向同一位置(c:\ Amazing.dll),运行regsvr32 / u会删除其中一个引用,第二次什么都不做...

如何摆脱这些参考?
我在查看注册编辑方案吗?如果是这样的话,如果我删除其中一个键到底会发生什么???

干杯

解决方案

回答

以前,我对COM感到非常困惑。不幸的是,尽管注册表删除了每个引用,但我还是不得不选择自己的方式。

回答

我们对象的GUID不应更改。换句话说,一旦注册了COM对象,重新注册就不应在注册表中添加任何其他内容。

除非我们向项目添加了其他COM接口或者对象。

无论如何,如果这是一次性交易(听起来确实如此),请打开regedit并手动删除不需要的密钥。

回答

自从Win95以来,MS的一种工具仍然在使用,它扫描注册表并进行诸如查找不再指向有效文件的COM密钥之类的事情,称为RegClean(我在这里找到了它:http:// downloads.z​​dnet.com/abstract.aspx?assetid=881470&node=2094),我发现有些地方仍在使用,特别是当与VB中的旧COM东西打交道时,它们在每次构建后都会生成新的COM GUID。

因此,如果我们知道了,然后取消注册并删除或者移动文件,请运行该应用程序,它将清除"孤立的"条目。

如果我们确实决定使用RegEdit删除键,则可能需要删除类ID和guid条目。