我正在使用由 myexe.exe 托管的进程外 COM 对象。托管 COM 对象的这些 exe 有多个版本。每个版本的接口和方法都可以略有改变。每个 myexe.exe 文件都位于版本化文件夹中(例如 C:\v2\myexe.exe、c:\v3\myexe.exe)
无法提前知道哪个版本将运行。我的客户端应用程序使用 ROT 附加到正在运行的 exe。我需要能够动态使用该 COM 对象版本,通过 IUnknown.QueryInterface 发现接口。
不幸的是,如果在 Windows 注册表中注册了旧版本的 COM,我在使用新方法时会崩溃。一旦我使用“myexe.exe -regserver”在 Windows 注册表中注册了较新版本的进程外 COM,崩溃就会消失。所以我不能在运行时动态使用旧版本或新版本的 meexe.exe,因为每次我需要重新注册我的 com 版本。
关于我为什么会崩溃或如何解决问题的任何想法?