CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  ATL/ActiveX/COM

关于dcom的程序编码实现的问题

楼主gpmn(冷血动物)2003-08-01 16:58:44 在 VC/MFC / ATL/ActiveX/COM 提问

想问以下的问题:  
  1、dcom能在广域网上实现吗?  
  2、现在我的dcom能够在局域网的环境下成功实现,但是假如是我的服务器的代码要在广域网上实现,就不能用NTLMSSP   (Windows   NT   LAN   Manager   Security   Support   Provider)来实现身份验证;于是我的代码看起来如下:  
   
  void   CclientTestDlg::OnBnClickedOk()  
  {  
  ITsWA*   pITs=NULL;  
  /* HRESULT   hr=::CoCreateInstance(CLSID_TsWA,NULL,   CLSCTX_REMOTE_SERVER     ,IID_ITsWA,(void**)&pITs);  
  if(SUCCEEDED(hr))  
  {  
  pITs->TestMethod();  
  pITs->Release();  
  }  
  else  
  {  
  CString   strError;  
  strError.Format("Error   code   is   :0x%x",hr);  
  MessageBox(strError,strError,MB_OK);  
  }  
  */ COSERVERINFO   svrInfo;  
  COAUTHINFO   authInfo;  
  COAUTHIDENTITY   authIdentity;  
   
  svrInfo.dwReserved1=0;  
  svrInfo.dwReserved2=0;  
  svrInfo.pwszName=L"10.0.0.35";  
  svrInfo.pAuthInfo=&authInfo;  
   
  authInfo.dwAuthnLevel=RPC_C_AUTHN_LEVEL_DEFAULT;  
  authInfo.dwAuthnSvc=   RPC_C_AUTHN_GSS_KERBEROS;  
  authInfo.dwAuthzSvc=RPC_C_AUTHZ_NAME;  
  authInfo.dwCapabilities=EOAC_NONE;  
  authInfo.dwImpersonationLevel=RPC_C_IMP_LEVEL_IMPERSONATE;  
  authInfo.pAuthIdentityData=&authIdentity;  
  authInfo.pwszServerPrincName=(LPWSTR)L"10.0.0.35";  
   
  authIdentity.Domain=(USHORT   *)(L"WorkGroup");//组  
  authIdentity.DomainLength=wcslen((LPWSTR)authIdentity.Domain);  
  authIdentity.Flags=SEC_WINNT_AUTH_IDENTITY_UNICODE;  
  authIdentity.Password=(USHORT   *)(LPWSTR)L"";//服务端Guest密码  
  authIdentity.PasswordLength=wcslen((LPWSTR)authIdentity.Password);  
  authIdentity.User=(USHORT   *)L"Guest";//服务器端的能够access的账号  
  authIdentity.UserLength=wcslen((LPWSTR)authIdentity.User);  
   
  MULTI_QI   qi;  
  qi.pIID   =   &IID_IUnknown;  
  qi.pItf   =   NULL;  
  qi.hr   =   0;  
   
  HRESULT   hr1=::CoCreateInstanceEx(CLSID_TsWA,NULL,CLSCTX_REMOTE_SERVER,&svrInfo,1,&qi);  
   
  CString   strErr;  
  if(SUCCEEDED(hr1))  
  {  
  HRESULT   hr2=qi.pItf->QueryInterface(IID_ITsWA,(void   **)&pITs);  
  if(SUCCEEDED(hr2))  
  {  
  pITs->TestMethod();  
  pITs->Release();  
  qi.pItf->Release();  
  }  
  else  
  {  
  qi.pItf->Release();  
  strErr.Format("hr1   is   0x%x,hr2   is   0x%x",hr1,hr2);  
  MessageBox(strErr,strErr,MB_OK);  
  }  
  }  
  else  
  {  
  strErr.Format("hr1   is   0x%x",hr1);  
  MessageBox(strErr,strErr,MB_OK);  
  }  
  }  
   
  但现在,如果用winnt的NTLMSSP验证,比如被注释的部分采用注册表设置,就肯定能成功调用server上的dcom组件,反之不是返回说访问被拒绝就是说RPC   server未启动;  
  3、COAUTHINFO的pwszServerPrincName成员究竟是什么意思? 问题点数:0、回复次数:3Top

1 楼luohualiushui(落花流水)回复于 2003-08-01 22:01:15 得分 0

gz  
  Top

2 楼luohualiushui(落花流水)回复于 2003-08-01 22:02:04 得分 0

在广域网肯定是可以实现的  
  用dcomcnfg配置Top

3 楼simpledevelop(阳光灿烂)回复于 2003-11-10 17:35:05 得分 0

回去研究一下Top

相关问题

  • 如何编码实现程序菜单的隐藏?
  • 怎么在vc程序中实现asp提交数据的编码
  • 各位高手朋友,在VB中怎样编码实现中止一个另外的.exe程序
  • 请问哪位大哥有用JPEG2000实现ROI(感兴趣区)编码的程序啊?
  • 怎样把DCOM服务暂停(用程序来实现)?
  • 求base64编码解码源程序
  • 求一赫夫曼编码器程序!
  • vb.net编码实现邮件接收
  • 一个自动实现编码问题
  • 各位大侠,请问在VC中如何实现Unicode编码.(或把ANSI编码转换为Unicode编码.)

关键词

  • hr
  • authinfo
  • svrinfo
  • authidentity
  • pits
  • dcom
  • 实现
  • 广域网
  • strerror
  • rpc

得分解答快速导航

  • 帖主:gpmn

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo