【问题标题】:Replace a COM class implementation at runtime在运行时替换 COM 类实现
【发布时间】:2010-07-08 16:34:55
【问题描述】:

这有点远,但有谁知道如何在运行时替换 COM 类的实现(或者,如果它真的可能的话)?

我的问题是我们在野外有一个 COM DLL,但我们不完全确定它是哪个版本,我们不想为了替换这个组件而对软件进行完全重建.有一个需要部署的单行修复程序,如果我可以简单地编写另一个 COM DLL 或类似的东西来替换该类,然后强制 COM 运行时仅针对该类指向该 DLL 文件,那就太好了.

我查看了 OLE/COM 对象查看器,有一些用于更改实现的选项,但我不知道如何正确配置它,因为它似乎并没有做太多。

如果有人有任何信息(即使是“不,不可能”的答案,我怀疑是这种情况),那就太好了。

干杯, 丹。

【问题讨论】:

    标签: com


    【解决方案1】:

    我不明白,为什么要完全重建?您只是在更改实现,接口和 coclass GUID 以及接口定义不应更改。这就是 COM 客户端所知道的关于 COM 服务器的全部内容。

    如果您确实更改了接口定义,那么您必须分配新的 GUID。 COM 中非常严格的规则,跳过它会购买巨大的 DLL Hell。是的,这需要完全重建。

    【讨论】:

      【解决方案2】:

      COM 对象的实现取决于哪个 DLL 注册为该 CLSID 的“服务器”。因此,只需制作一个与原始对象相同的对象,除了错误修复,并注册它。

      【讨论】:

        猜你喜欢
        • 2023-03-20
        • 1970-01-01
        • 1970-01-01
        • 2013-07-05
        • 2015-01-15
        • 2019-06-07
        • 1970-01-01
        • 2019-11-18
        • 2019-03-25
        相关资源
        最近更新 更多