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

Posted

技术标签:

【中文标题】当 /u arg 不起作用时,如何取消注册最初使用 RegSvr32 添加的 COM dll?【英文标题】:How do I unregister COM dlls initially added with RegSvr32 when the /u arg doesn't work? 【发布时间】:2010-09-06 09:23:25 【问题描述】:

对,最初运行:

c:\regsvr32 Amazing.dll

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

c:\regsvr32 /u Amazing.dll

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

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

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

干杯

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:

MS 有一个工具仍然在流传,自 Win95 天以来一直存在,它可以扫描注册表并执行诸如查找不再指向有效文件的 COM 键等称为 RegClean 的工具(我在这里找到了它:@ 987654321@),我已经看到一些地方仍在使用,特别是在与 VB 中的遗留 COM 东西混淆时,这些东西在每次构建后都会生成新的 COM GUID。

所以,如果你得到了那个,然后取消注册并删除或移动文件,运行应用程序,它将清除“孤立”条目。

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

【讨论】:

【参考方案3】:

我以前在 COM 上搞得一团糟。不幸的是,尽管注册表删除了每个引用,但我不得不选择自己的方式。

【讨论】:

以上是关于当 /u arg 不起作用时,如何取消注册最初使用 RegSvr32 添加的 COM dll?的主要内容,如果未能解决你的问题,请参考以下文章

IOS unregisterForRemoteNotifications 在飞行模式下不起作用

在 Java Swing 中取消选择单选按钮

当 url 有标签和问号时,注册自定义 URI 方案在 Windows 7 上不起作用

如何修复对象具有未应用的转换。这对于带有骨架的网格永远不起作用。出口取消

如何使用 javascript 取消注册/取消绑定 Material ui 中的事件

如何在颤动中使用动画列表对最初渲染的项目进行动画处理