在运行时替换COM类实现

在运行时替换COM类实现,com,Com,这有点遥不可及,但是有人知道如何在运行时替换COM类的实现吗(或者,如果可能的话) 我的问题是,我们有一个COM DLL在野外,但我们不完全确定它是哪个版本,我们不想做一个完整的软件重建只是为了更换这一个组件。有一个需要部署的单行修复程序,如果我可以简单地编写另一个COM DLL或类似的东西来替换该类,然后强制COM运行时仅针对该类指向该DLL文件,那将是非常棒的 我已经看过OLE/COM对象查看器,有一些选项可以更改实现,但我不知道如何正确配置它,因为它似乎没有太多功能 如果任何人有任何信息(

这有点遥不可及,但是有人知道如何在运行时替换COM类的实现吗(或者,如果可能的话)

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

我已经看过OLE/COM对象查看器,有一些选项可以更改实现,但我不知道如何正确配置它,因为它似乎没有太多功能

如果任何人有任何信息(即使是“不,不可能”的答案,我怀疑是这样),那将是极好的

干杯, 丹。

我不明白,为什么要彻底重建?您只是在更改实现,接口和coclass guid以及接口定义不应该更改。这就是COM客户端对COM服务器的所有了解


如果确实更改了接口定义,则必须分配新的GUID。COM中非常难的规则,跳过它会带来巨大的DLL地狱。是的,这需要完全重建。

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