CoInitialize(NULL);
hr = CoInitializeSecurity(
        NULL, -1, NULL,  NULL, RPC_C_AUTHN_LEVEL_DEFAULT,         RPC_C_IMP_LEVEL_IDENTIFY,  NULL, 0, NULL);  COSERVERINFO ServerInfo={0,L"192.168.0.5",NULL,0};
MULTI_QI MultiQi={&IID_IUnknown,NULL,NOERROR};
hr=CoCreateInstanceEx(CLSID_Account,NULL,CLSCTX_REMOTE_SERVER,&ServerInfo,1,&MultiQi);
if(FAILED(hr))
{
_com_error e(hr);
MessageBox(e.ErrorMessage());////这里返回错误为没有注册类别
return false;
}
………………
这个客户程序只能在本机上调用服务器的EXE组件,通过网络刚出现上述错误了,请问各位大虾如何修改?谢谢

解决方案 »

  1.   

    服务端调用CoInitializeSecurity没有?
      

  2.   

    //服务端调用过的,在
    #if _WIN32_WINNT >= 0x0400 & defined(_ATL_FREE_THREADED)
        HRESULT hRes = CoInitializeEx(NULL, COINIT_MULTITHREADED);
    #else
        HRESULT hRes = CoInitialize(NULL);
    #endif
        _ASSERTE(SUCCEEDED(hRes));
    //之后和客户端一样
    hr = CoInitializeSecurity(NULL, -1, NULL,  NULL, RPC_C_AUTHN_LEVEL_DEFAULT,  RPC_C_IMP_LEVEL_IDENTIFY,  NULL, 0, NULL);
      

  3.   

    安全性不能是默认的,你都加上everyone,再试试
      

  4.   

    把server & client 加入同一个域就可以了