regsrv32:在注册更新之前,是否需要取消注册COM对象?

时间:2012-12-18 16:05:37

标签: com

我不时发布我在客户端计算机上注册的COM对象的更新。

Noob关于注册表的问题:

每次我在新的随机GUID下注册具有相同命名空间和对象名称的更新时,会发生什么?对象被替换了吗?以前的对象版本仍然存在吗?我是否需要取消注册以前的版本?是否可以取消注册原始GUID?

1 个答案:

答案 0 :(得分:2)

您需要的注册取决于您选择更新COM对象的方法。最简单的方法是更新现有对象,在这种情况下,您可以保留完整的CLSID和对象,可能会使用新方法和接口进行扩展。在这种情况下,您基本上不需要取消注册,但是您可以遇到退出某些COM类而不取消注册它的情况,您将在注册表上将其注册为孤立垃圾。

取消注册要更换的模块更安全,然后在安装后注册新模块。或者,您的新COM库可以在内部处理升级并显式删除已退役的注册(与普通的取消注册旧版本相比,它更复杂,而且通常是不必要的)。取消注册/重新注册周期可能会删除一些持久状态(如果您有任何注销,并取消注册)。

如果您希望您的版本在目标系统中并行运行,您可能希望更喜欢其他apoproach。在这种情况下,您将为所有/某些类使用新的CLSID,不同的(特别是版本化的)ProgID和版本无关的ProgID,以便应用程序绑定到“当前”或安装的最新版本的类。

相关问题