想请问一下哪位高手知道,DCOM客户端程序为什么只能在本机运行?(100分)

  • 主题发起人 主题发起人 yanpeilin
  • 开始时间 开始时间
Y

yanpeilin

Unregistered / Unconfirmed
GUEST, unregistred user!
本人试着用DCOM编写C/S结构程序,可总是只能运行于服务器上,在其它机器运行提示“拒绝访问”请问哪位高手能否告诉我这是什么原因吗,要怎样去解决。
 
客户机没有安装dcom for 95/98,或是dcom 的安全设定没有正确设置。
 
to china359,客户端是win2000,且安全性为默认值应该没问题的,为什么在同一机器上同样的设置又可以呢。
 
DCOM是三层的东东吧,不是C/S结构的吧
这种问题论坛里面有很多帖子都已经回答过了。
不知道你的DCOM在客户机有没有注册过,看样子应该是DCOM的配置问题
转贴一篇房客的帖子吧

DCOM中应用程序的分发
客户端的分发和设定
1。如果是使用独立的EXE文件,那么必须拷贝所有的EXE档案以及这些档案使用的OCX,
DLL到客户端。你可以使用DELPHI内建的INSTALLSHIELD制作安装磁盘。如果是使用
ACTIVEFORM,那么就无需安装客户端的应用程序,因为ACTIVEFORM可以自动的下载到客户
端。
2。在客户端机器中必须安装DCOM。
3。拷贝MIDAS。DLL档案到客户端的Windows/System或是Winnt/System32子目录中。
你只需要拷贝这个档案到Windows的系统子目录下即可,当客户端应用程序执行时,它会
自动注册这个档案到注册表中
服务端的分发和设定
在多层应用系统中,分发服务比较复杂。
1。决定使用存取控制的权限。如果你有WINDOWS NT做为应用程序服务器的平台,那么
建议使用‘用户级存取控制’
2。执行应用程序服务器一次以注册应用程序服务器。
3。拷贝MIDAS。DLL到系统子目录中。而且必须注册。你可以使用TREGSRV32来注册
MIDAS。DLL
4。拷贝IDPROV32.DLL到BDE数据库引擎的子目录中。
5。使用DCOMCNFG设置应用程序服务器的存取权限。在通常情况下,可以将验证等级
设定为‘无’,并且把存取控制和激活控制设置为EVERYONE就可以让所有的客户端用户激
活和存取应用程序服务器。
6。如果目前使用的DCOM是对于95的话,强烈建议你升级到98,否则程序员必须自行
激活RPCSS。EXE
至此,分发过程已经结束,如果还有问题,请使用DELPHI5的MODULE VIEWER来观察。
当程序员使用DELPHI开发分布式多层应用系统后,除了将应用程序序列分发之外,还必须
使用DCOM的配置应用程序DCOMCNFG.EXE来进行设置。
在WIN9.X系列中进行DCOM之前,应确认是否装有DCOM,如果没有,可从
http://www.microsoft.com/下载。
WIN9.X配置为DCOM服务器
第一步就是将访问控制设置为用户级控制。在‘获取用户及组的列表中’输入该局域
网中能提供安全权限的机器名(该计算机必须正在运行)。
第二步就是运行位于系统目录下的/windows/system/Dcomcnfg.exe文件。在应用程序
列表中应该能够找到你所编制的应用程序,如果没有列出,请将你所编的程序运行一次。
通常,我们可以通过修改默认属性及默认安全性来达到一定的目的,在‘默认属性’
页中,让‘启动该计算机的分布式COM’选项选中,而‘默认的身份验证级别’中‘连接’
的意思代表‘只在客户端第一次连结应用程序服务器时检查客户端的权限’。
‘默认的模拟级别’中‘识别’的意义为‘在这种模式下,服务端可以取得连结的客
户端的权限信息,但是服务端无法以连结的客户端的权限存取系统对象’。当其设为‘模
拟’时,表明‘服务端可以取得连结的客户端的权限信息,并且能够以连结的客户端的权
限存取系统对象’。
在默认属性页中,还有一个‘为跟踪引用提供附加的安全性’的选项。这个设置可以
让应用程序服务器使用COM/DCOM的回叫机制以保持COM/DCOM中远程调用参考计数值
(reference count)的正确性,以避免客户端应用程序恶意的调用应用服务器并且断线。
选中这个选项可以让应用程序服务器有效的管理其生命周期,但是也会减缓应用程序服务
执行的速度。
上述的内容其实在DCOMCNFG的帮助之中都有,我这番解说有些画蛇添足,但我对它配
置的建议就是,尽量使用默认值。
在NT中的一些配置也极其相似。但要理解以下的概念
激活控制:就是指哪些用户可以激活应用程序服务器。当客户端应用程序执行并且试
着在远程机器之中激活应用程序服务器时,COM/DCOM的安全机制会检查这个客户端应用程
序登录的用户是否有权限中以激活应用程序。
存取控制:指当应用程序服务器由适当的用户激活后,哪些用户可以存取应用程序服务
器所提供的服务。此外,一个应用程序服务器可以提供数种不同的服务,取存控制能够限
定特定的用户进行特定的操作
认证控制:是指在数据进行传递时,数据是否加密
鉴定控制:是指应用程序服务器的权限。即指在服务器上登陆的用户,他所执行的应用
程序服务器所存取的资源是否在他的权限范围之内。
______________________________________
 
to ziyu,你的这些方法我都试过,可还是不能解决问题,操作系统是win2000,DCOM只要默认配置就可以了吧,当我将服务程序和客户程序copy到任何一台机器都能用,只是服务器只能是本机。
我的这个测试程序在此下载:http://happly03.wx-e.com/cut.rar 谁能帮我调试好,给我一个具体解决方案,谢谢!
 
2000 不要禁用那个 Guest. 就可以了!
 
一、dcom配置
1、运行Win2000服务器上的dcomcnfg程序,进行DCOM配置。
2. 进入DCOM的总体默认属性页面,将“在这台计算机上启用分布式COM”打上勾,将默认身份级
别改为“无”。
3. 进入DCOM的总体默认安全机制页面,确认默认访问权限和默认启动权限中的默认值无EveryOne
,如果不去掉EveryOne,应用服务器不能正常启动。
4.在常规页面中,双击你的应用服务器,打开你的应用服务器DCOM属性设置。
5.将常规页面中的身份验证级别改为“无”。
6.位置页面中选上“在这台计算机上运行应用程序”。
7.将安全性页面设置中,均选择“使用自定义访问权限”,编辑每一个权限,将EveryOne加入用
户列表中。
8.身份标识页面中,选择“交互式用户”。
9.Win2000的GUEST用户不能禁用。
二、起中间服务器的机子的配置
1. 起中间服务器的机子安装应用程序,运行并注册。
2、参考上面的dcom配置
3、发布中间服务器的机子也要建个用户eu密码eu
4、regsvr32 midas.dll,midas.dll文件是放在system32下
5、该DbLoginParam.ini的配置,在这台机子建euserver的oracle的主机字符串,去连接数据库
6、eureport下的,把[IP]
Host_Dcom=192.168.0.27
后面的ip给为起中间服务器机子的ip
三、客户机win2000
1、客户机要建个用户eu密码也是eu.
2、注册那个中间服务器
3、参考上面的dcom配置
4、regsvr32 midas.dll,midas.dll文件是放在system32下
5、eureport下的,把[IP]
Host_Dcom=192.168.0.27
后面的ip给为起中间服务器机子的ip
四、98客户机
1、98的机子注销登陆用eu密码eu登陆
2、注册那个中间服务器
3、用dcom的98的配置程序,进行上面说的dcom配置服务
4、regsvr32 midas.dll,midas.dll文件是放在system32下
5、eureport下的,把[IP]
Host_Dcom=192.168.0.27
后面的ip给为起中间服务器机子的ip
 
看我的这个
 
应该是服务器win2000禁止访问某些东西(比如说注册表)的权限了吧……
win2000的东西。
 
谢谢zqs10597249和ziyu,综合你们的我问题还算解决了.还有其它几位也谢谢能给我提货意见和答案.
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
I
回复
0
查看
601
import
I
后退
顶部