在XP系统中,不能访问COM+应用程序,怎么处理
在XP系统中,不能访问COM+应用程序,怎么办?
WindowsXP系统,sp2补丁,工作站都没有在域中。我使用ATL编写了一个COM+应用程序,使用VC远程调用,调用CoCreateInstancEX时,总是返回E_ACCESSDENIED,好像是安全问题,但是不知道怎么配置,那位能够帮助我,不胜感激。我的调用代码如下:
CoInitialize(NULL);
COSERVERINFO ServerInfo;
MULTI_QI MultiQI;
COAUTHINFO athn;
memset(&ServerInfo, 0, sizeof(ServerInfo));
memset(&athn, 0, sizeof(athn));
athn.dwAuthnLevel = RPC_C_AUTHN_LEVEL_NONE;
athn.dwAuthnSvc = RPC_C_AUTHN_WINNT;
athn.dwAuthzSvc = RPC_C_AUTHZ_NONE;
athn.dwCapabilities = EOAC_NONE;
athn.dwImpersonationLevel = RPC_C_IMP_LEVEL_IMPERSONATE;
athn.pAuthIdentityData = NULL;
athn.pwszServerPrincName = NULL;
ServerInfo.pwszName = L "HRML-DR ";
ServerInfo.pAuthInfo = &athn;
ServerInfo.dwReserved1 = 0;
ServerInfo.dwReserved2 = 0;
MultiQI.hr = NOERROR;
MultiQI.pItf = NULL;
MultiQI.pIID = &__uuidof(Pos_ServerLib::IPos_ADO);
HRESULT hr = CoCreateInstanceEx(__uuidof(Pos_ServerLib::Pos_ADO), NULL,CLSCTX_SERVER, &ServerInfo, 1,&MultiQI);
Pos_ServerLib::IPos_ADOPtr pap = (Pos_ServerLib::IPos_ADO *)MultiQI.pItf;
hr = pap-> Open(_bstr_t( "HRML-DR "), _bstr_t( "HCPACS_DB "), _bstr_t( "sa "), _bstr_t( "sasa "));
ADODB::Recordset15Ptr pp = pap-> GetRecordset(_bstr_t( "SELECT * FROM TabPatient "));
for(pp-> MoveFirst(); !pp-> AdoEOF; pp-> MoveNext())
{
MessageBox((_bstr_t)pp-> GetCollect( "PatientID "));
}
------解决方案--------------------
xp,确实容易出现各种问题。
我不知道lz是所有的xp都是这个问题,还是单独就这一台xp是这个问题。
最好多找几台xp机子,多做一些测试。
我的一般做法是把应用程序中涉及到的dll,尽可能打包的xp中去。
------解决方案--------------------
不懂,帮忙顶个
------解决方案--------------------
是否缺少文件
------解决方案--------------------
CLSCTX_SERVER应该是CLSCTX_REMOTE_SERVER吧
服务器HRML-DR上是否dcom等服务都正常运行了?
有日志记录到什么信息吗?
你工作站上的用户是不是不能访问服务器呢?
WindowsXP系统,sp2补丁,工作站都没有在域中。我使用ATL编写了一个COM+应用程序,使用VC远程调用,调用CoCreateInstancEX时,总是返回E_ACCESSDENIED,好像是安全问题,但是不知道怎么配置,那位能够帮助我,不胜感激。我的调用代码如下:
CoInitialize(NULL);
COSERVERINFO ServerInfo;
MULTI_QI MultiQI;
COAUTHINFO athn;
memset(&ServerInfo, 0, sizeof(ServerInfo));
memset(&athn, 0, sizeof(athn));
athn.dwAuthnLevel = RPC_C_AUTHN_LEVEL_NONE;
athn.dwAuthnSvc = RPC_C_AUTHN_WINNT;
athn.dwAuthzSvc = RPC_C_AUTHZ_NONE;
athn.dwCapabilities = EOAC_NONE;
athn.dwImpersonationLevel = RPC_C_IMP_LEVEL_IMPERSONATE;
athn.pAuthIdentityData = NULL;
athn.pwszServerPrincName = NULL;
ServerInfo.pwszName = L "HRML-DR ";
ServerInfo.pAuthInfo = &athn;
ServerInfo.dwReserved1 = 0;
ServerInfo.dwReserved2 = 0;
MultiQI.hr = NOERROR;
MultiQI.pItf = NULL;
MultiQI.pIID = &__uuidof(Pos_ServerLib::IPos_ADO);
HRESULT hr = CoCreateInstanceEx(__uuidof(Pos_ServerLib::Pos_ADO), NULL,CLSCTX_SERVER, &ServerInfo, 1,&MultiQI);
Pos_ServerLib::IPos_ADOPtr pap = (Pos_ServerLib::IPos_ADO *)MultiQI.pItf;
hr = pap-> Open(_bstr_t( "HRML-DR "), _bstr_t( "HCPACS_DB "), _bstr_t( "sa "), _bstr_t( "sasa "));
ADODB::Recordset15Ptr pp = pap-> GetRecordset(_bstr_t( "SELECT * FROM TabPatient "));
for(pp-> MoveFirst(); !pp-> AdoEOF; pp-> MoveNext())
{
MessageBox((_bstr_t)pp-> GetCollect( "PatientID "));
}
------解决方案--------------------
xp,确实容易出现各种问题。
我不知道lz是所有的xp都是这个问题,还是单独就这一台xp是这个问题。
最好多找几台xp机子,多做一些测试。
我的一般做法是把应用程序中涉及到的dll,尽可能打包的xp中去。
------解决方案--------------------
不懂,帮忙顶个
------解决方案--------------------
是否缺少文件
------解决方案--------------------
CLSCTX_SERVER应该是CLSCTX_REMOTE_SERVER吧
服务器HRML-DR上是否dcom等服务都正常运行了?
有日志记录到什么信息吗?
你工作站上的用户是不是不能访问服务器呢?