是的,最初运行的是:

c:\regsvr32 Amazing.dll

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

c:\regsvr32 /u Amazing.dll

事先 - 但是嘿!我忘了。

言归正传,当在 VS 中添加 COM 引用时,我可以看到 3 个“Amazing”实例都指向同一位置(c:\Amazing.dll),正在运行 regsvr32 /u 第二次删除其中一个引用 - 什么也不做......

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

干杯

有帮助吗?

解决方案

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

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

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

其他提示

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

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

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

我以前就因 COM 而陷入了可怕的混乱。不幸的是,我不得不选择通过注册表删除每个引用的方式。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top