我在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);
非常感谢任何帮助。
答案 0 :(得分:4)
64位客户端以管理员身份运行,而32位客户端则不是。强制32位客户端也以管理员身份运行解决了问题