当 /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 在飞行模式下不起作用
当 url 有标签和问号时,注册自定义 URI 方案在 Windows 7 上不起作用
如何修复对象具有未应用的转换。这对于带有骨架的网格永远不起作用。出口取消