Out of Process COM Server同时具有32位和64位客户端

时间:2014-01-31 02:26:47

标签: c++ com

我在64位计算机上运行64位进程外COM服务器。我使用我的C:\Windows\System32文件夹中的regsvr32.exe注册了我的64位代理/存根DLL,可以运行我的64位客户端。我还在C:\Windows\SysWOW64文件夹中注册了我的32位代理/存根,我可以运行我的32位客户端。我也可以同时运行多个32位客户端,同时运行多个64位客户端。但是,如果我尝试运行32位客户端然后运行64位客户端,则第二个客户端会尝试创建新的Server.exe进程(如果我从64位客户端开始,则会发生同样的情况)。他们不应该只使用相同的Server实例吗?

这是我的服务器CoCreateInstanceEx来电:

HRESULT hr = CoCreateInstanceEx(CLSID_COMServerObject, NULL, CLSCTX_LOCAL_SERVER | CLSCTX_ACTIVATE_64_BIT_SERVER, NULL, 1, &qi);

我的客户CoCreateInstanceEx来电都是这样的:

hr = CoCreateInstanceEx(clsid, NULL, CLSCTX_LOCAL_SERVER | CLSCTX_ACTIVATE_64_BIT_SERVER, NULL, 1, &qi);

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

64位客户端以管理员身份运行,而32位客户端则不是。强制32位客户端也以管理员身份运行解决了问题