c++ - 具有同时 32 位和 64 位客户端的进程外 COM 服务器

标签 c++ com

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

这是我的服务器 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);

如有任何帮助,我们将不胜感激。

最佳答案

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

关于c++ - 具有同时 32 位和 64 位客户端的进程外 COM 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21471436/

相关文章:

c# - 如何从 C# 调用 native 库?

c++ - 如何在 C++ 中返回所有元素均为 1 的二维 vector

c++ - 我如何将堆栈转储到 Arduino 中?

c++ - CMake 和外部依赖

c++ - 加载 enclave : Couldn't open file with CreateFile() 时出错

c++ - 为日期设置 Excel NumberFormat,忽略 native C++ 中的语言环境

c++ - 'using' 和 'using namespace' 之间的区别

c# - .NET RTD/COM Excel 互操作错误在一个用户的机器上?

windows - 注册 DLL 有什么作用?

python - 通过 COM 独立控制 2 个独立的 Excel 实例......可以做到吗?