14

对,最初运行:

c:\regsvr32 Amazing.dll

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

c:\regsvr32 /u Amazing.dll

事先 - 但是,嘿!我忘了。

切入正题,当在 VS 中添加 COM 引用时,我可以看到 3 个“Amazing”实例都指向同一个位置 (c:\Amazing.dll),运行regsvr32 /u会删除其中一个引用,第二次 - 确实没有...

我如何摆脱这些引用?我在看一个注册表编辑器场景吗?- 如果是这样 -如果我删除其中一个键会发生什么

干杯

4

3 回答 3

14

您的对象的 GUID 不应该改变。换句话说,一旦您注册了 COM 对象,重新注册不应该向注册表添加任何其他内容。

除非您在项目中添加了额外的 COM 接口或对象。

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

于 2008-08-21T12:35:41.543 回答
4

MS 的一个工具仍然存在,自 Win95 天以来一直存在,它扫描注册表并执行诸如查找不再指向有效文件的 COM 键等称为 RegClean 的工具(我在这里找到它:http:// downloads.z​​dnet.com/abstract.aspx?assetid=881470&node=2094),我已经看到一些地方仍在使用,特别是在与 VB 中的旧 COM 东西混淆时,这些东西在每次构建后都会生成新的 COM GUID。

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

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

于 2008-08-21T12:52:11.987 回答
0

我之前把自己弄得一团糟。不幸的是,尽管注册表删除了每个引用,但我不得不选择自己的方式。

于 2008-08-21T12:32:58.227 回答