CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

急!!!DCOM连接的问题

楼主finix(*_*)2002-05-13 16:35:54 在 VC/MFC / 基础类 提问

我用ATL作的Service和client在一台机器上运行通过,但改为两台机器通讯出错!  
  我已将*.exe和*ps.dll拷到服务器和客户器的winnt\system32目录下,并*   /Service和regsvr32   *ps.dll,然后客户机运行出错,说接口拒绝访问。代码如下:  
                    COSERVERINFO   serverInfo;  
  ZeroMemory(&serverInfo,   sizeof(COSERVERINFO));  
   
  COAUTHINFO   athn;  
  ZeroMemory(&athn,   sizeof(COAUTHINFO));  
   
  //   Set   up   the   NULL   security   information  
  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"finix";  
  serverInfo.pAuthInfo   =   &athn;  
  serverInfo.dwReserved1   =   0;  
  serverInfo.dwReserved2   =   0;  
   
  MULTI_QI   qi   =   {&IID_IMain,   NULL,   S_OK};  
   
  try  
  {  
  m_pSerMain   =   new   IMainPtr;  
  }  
  catch(...)  
  {  
  AfxMessageBox(AFX_IDP_FAILED_MEMORY_ALLOC,   MB_ICONSTOP);  
   
  return;  
  }  
  HRESULT   hResult   =   CoCreateInstanceEx(CLSID_Main,   NULL,  
  CLSCTX_LOCAL_SERVER   |   CLSCTX_REMOTE_SERVER,     &serverInfo,   1,   &qi);  
   
                    /////上面语句出错  
  if   (FAILED(hResult))  
  {  
  _com_error   err(hResult);  
   
  CString   strMessage   =   "Unable   to   access   IMain   because   ";  
  strMessage   +=   err.ErrorMessage();  
  /////说IMain拒绝访问  
  AfxMessageBox(strMessage,   MB_ICONSTOP);  
   
  delete   m_pSerMain;  
  m_pSerMain   =   NULL;  
   
  return;  
  }  
   
  m_pSerMain->Attach((IMain*)qi.pItf);  
  。。。。。。。。。。。。。。 问题点数:100、回复次数:27Top

1 楼finix(*_*)回复于 2002-05-13 17:09:36 得分 0

help!!!  
  help!!!Top

2 楼finix(*_*)回复于 2002-05-16 09:01:49 得分 0

高手快来帮忙啊!Top

3 楼finix(*_*)回复于 2002-05-16 09:48:09 得分 0

快来看看把Top

4 楼wb197(断点运行)回复于 2002-05-23 11:03:30 得分 0

关注Top

5 楼wb197(断点运行)回复于 2002-05-23 13:28:51 得分 0

不会真的没人知道吧Top

6 楼huqiming(Super)回复于 2002-05-23 15:30:28 得分 25

拒绝访问的可能性有几种。  
  一个是因为2k服务器,客户端没有访问权限  
  一个是因为dcomcnfg没有配置客户端的访问权限,甚至没有开通远程访问(enable   remote   connection)  
  还有可能是客户端没有启动服务的权限,解决办法是先在服务器端运行一个客户程序,再去客户端运行客户程序。  
   
  再要有问题就复杂了,先试试吧!  
  Top

7 楼wyzegg(蛋)回复于 2002-05-23 20:39:13 得分 10

需要在服务器端用DCOMCNFG配置权限。  
  如果你选择使用操作系统的安全性的话,客户端登录的用户,需要在服务器上存在并且有启动和访问组件的权限  
  Top

8 楼sailing1492(扬帆)回复于 2002-05-23 21:24:43 得分 5

一个是因为2k服务器,客户端没有访问权限  
  这能否再说明点呢,2K服务器怎样导致了客户没权限?  
   
  一个是因为dcomcnfg没有配置客户端的访问权限,甚至没有开通远程访问(enable   remote   connection)  
  (enable   remote   connection)是指   “在这台计算机上启动分布式COM”吗?  
   
  Top

9 楼sailing1492(扬帆)回复于 2002-05-23 21:26:33 得分 0

我也碰到了,反复比较,实验,费了一个小时终于通了。通的不明不白Top

10 楼finix(*_*)回复于 2002-05-27 13:10:33 得分 0

在服务器上DCOMCNFG中安全性中使用自定义的访问权限,加入了客户端的机器名,同样在使用自定义启动权限一样加入了。  
  在客户端上DCOMCNFG中位置中指定服务器名,身份验证为无  
  可是还是说拒绝访问!  
  各位还有没有其它的   方法补充的啊?急啊!!!Top

11 楼linghuye(令狐叶)回复于 2002-05-27 13:26:01 得分 30

1.机器通吗?  
  2.跨域了吗?  
  3.报错时,服务器上的你的DCOM程序(是EXE吗,还是DLL)进程起来了吗?  
  4.加上Everyone,及   Network   试了吗?  
  Top

12 楼finix(*_*)回复于 2002-05-27 13:44:20 得分 0

客户端可以找到服务器的  
  都在一个workgroup中  
  我是把服务器程序进入调试状态下启动客户程序的  
      最后的问题不知道如何解决!是不是在服务器程序中的   DCOMCNFG中自定义访问权限和启动权限中加入everyone和network?  
  Top

13 楼finix(*_*)回复于 2002-05-27 13:47:55 得分 0

现在加了还是不行啊!Top

14 楼mrchen_fj()回复于 2002-05-27 14:03:32 得分 5

1.是在自定义访问权限和启动权限中加.  
  2.停掉调试状态下的DCOM服务程序,由客户端直接启动试试.  
  3.你的客户端和服务端都是Win2000吗?  
  4.finix是你的服务器名吗?或换成IP地址试试   "192.168.X.X"  
  5.身份标识选择"交互式用户"了吗?  
  Top

15 楼mrchen_fj()回复于 2002-05-27 14:10:04 得分 0

先停掉服务器端的DCOM程序,启动客户端调用,然后跑到服务器端机器看程序被启动了吗?  
  在马上进入"计算机管理",“事件查看器","应用程序"&"安全性",看看有没有消息说   某某企图启动你的DCOM被拒绝,详细原因是什么.Top

16 楼finix(*_*)回复于 2002-05-27 14:11:05 得分 0

1.加了  
  2。还是不行  
  3。服务器是2000server   客户是2000professional  
  4.是的  
  5.我是用最后一项系统帐户的,Top

17 楼finix(*_*)回复于 2002-05-27 14:15:46 得分 0

有没有人愿意帮我调试一下的?代码很短!Top

18 楼finix(*_*)回复于 2002-05-27 14:16:44 得分 0

我的qq106506571Top

19 楼zhzhd(东东)回复于 2002-05-27 14:18:45 得分 5

我是通过域访问服务器组件的。服务器端用MTS。客户端需要注册(regsvr32   c:\com\chengxu.dll)Top

20 楼linghuye(令狐叶)回复于 2002-05-27 19:48:56 得分 0

开会去了.  
   
  在客户端启动,报错,跑到服务器上,打开"计算机管理",   "事件查看器",  
  "应用程序"&"安全性",看看是不是说"某某试图启动Dcom,被拒绝,原因是..".  
   
  还不行!我kao,发给我代码我测一下.   linghuye@163.com  
   
  Top

21 楼linghuye(令狐叶)回复于 2002-05-28 16:38:58 得分 0

0.我没有qq  
   
  1.将服务类CServiceModule中Run方法中原CoInitializeSecurity(...)改为:   CoInitializeSecurity(NULL,   -1,   0,   NULL,   RPC_C_AUTHN_LEVEL_NONE,   RPC_C_IMP_LEVEL_IDENTIFY,   NULL,   0,   0);  
   
  2.服务端设身份验证级别"无",   身份标识   "交互式用户",   测试通过.  
   
  3.多客户连接,一般每个客户有一个DCOM对象与之对应,   不可能连到同一对象上。   但可能都处在同一ser.exe进程内,你用全局变量试试。但DCOM一般是或说严格的使用应是   无状态   的.Top

22 楼finix(*_*)回复于 2002-05-29 15:50:56 得分 0

To   linghuye:  
  请问你是如何注册的,我在身份标识中不能选交互式用户,是不是你用regserver做参数注册的?  
  我的程序最终是这样的,所有的客户都通过服务器进行通讯的,类似聊天室一样,如果连接的都不是一个服务器实例的话,似乎无法通信了(猜想)。Top

23 楼finix(*_*)回复于 2002-05-30 13:11:18 得分 0

up一下Top

24 楼finix(*_*)回复于 2002-05-30 14:17:02 得分 0

我怎么还是连不通啊  
  我要疯了!!气死我了Top

25 楼redpower(常宁)回复于 2002-05-30 14:23:36 得分 20

权限没有设置对,改权限!Top

26 楼redpower(常宁)回复于 2002-05-30 14:34:35 得分 0

注意设置权限的时候别忘了设置每个COM   的权限Top

27 楼finix(*_*)回复于 2002-05-30 21:12:32 得分 0

在这里再次谢谢大家得帮助  
  结贴Top

28 楼linghuye(令狐叶)回复于 2002-05-31 20:06:04 得分 0

我把程序编译完,到服务器上  
  ser.exe   /regserver   注册的,同时注册存根代理.  
  不能选交互式用户吗,真奇怪,在我的环境中选其它项也是不通的.  
  至于通信,可以开共享内存区,或使用硬盘文件形式交流等.  
  但DCOM在连接数上好像有限制.  
  Top

相关问题

  • DCOM连接点问题,急请教!
  • 用dcom连接
  • 关于DCOM连接
  • 又是DCOM连接!!!!
  • DCOM连接问题???
  • xp home版怎么不能连接dcom服务器,急急急!!!
  • DCOM连接点问题
  • DCOM中怎么实现连接点
  • 再问关于DCOM的连接问题
  • 关于DCOM连接的基本问题

关键词

  • 服务器
  • 客户
  • 安全性
  • 计算机
  • dll
  • null
  • athn
  • 权限
  • 客户端
  • 访问

得分解答快速导航

  • 帖主:finix
  • huqiming
  • wyzegg
  • sailing1492
  • linghuye
  • mrchen_fj
  • zhzhd
  • redpower

相关链接

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

广告也精彩

反馈

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