我正在创建一个简单的客户端,通过虚拟机上的DCOM连接到OPC服务器。 我在Windows 7计算机上测试了相同的代码并且它正常工作,但在将编码移动到Windows 10后它停止工作(包含DCOM服务器的虚拟机是相同的)。 关键是我能够实例化COM对象,但我无法调用它的任何方法,因为我收到了E_ACCESSDENIED结果。 这些是步骤:
tagMULTI_QI res;
res.pIID = &__uuidof(IOPCServer);
res.pItf = NULL;
hr = CoCreateInstanceEx(
clsid,
NULL,
CLSCTX_INPROC_SERVER,
&sin,
1,
&res);
这返回hr = S_OK,res.hr也有S_OK值。 但之后,任何调用都会检索E_ACCESSDENIED结果。 这是:
hr = server->GetStatus(&status);
IOPCItemProperties* ItemProperties;
hr = server->QueryInterface(
__uuidof(IOPCItemProperties),
(void**)&ItemProperties);
知道可能导致问题的原因是什么?可能与Windows 10操作系统有关吗?