终于弄清楚了DCOM的正确配置方法,不过又发现了一个奇怪的现象,看哪位能解释一下。 ( 积分: 50 )

  • 主题发起人 主题发起人 shaoyy
  • 开始时间 开始时间
S

shaoyy

Unregistered / Unconfirmed
GUEST, unregistred user!
一直感觉DCOM很难配置,以前经常是有时行有时又不行,就是不知道怎样配置是"一定"行的,于是下定决心经过一整天的反复测试,好像是找到了"一定行"的方法了:
1.网络环境:Win2000内部局域网。
2.中间层配置方式:
1) 打开控制面板->管理工具->计算机管理,将Guest账号启用,并清除密码。
2) 执行dcomcnfg,在"应用程序"中找到你的中间层应用,双击弹出属性框,并作以下配置:
选择"常规"页,将"默认身份验证级别"设置为"无"。
选择"位置"页,选取"在这台计算机上运行应用程序"选项。
选择"安全性"页,点击相应用的"编辑"按扭,确保将Guests组加入到相应用的权限中。
选择"身份标识"页,将用用户帐户设置为"交互式用户"。
3.客户端
1) 必须启用Guest帐号并清除密码。
2) 需发布midas相关dll,如midas.dll
3) 如果客户端使用到中间层定义的对象接口(interface),那么需要在客户端运行一次中间层程序(这一点还不是很明白为什么会这样??)。
经过以上配置,我所测试的机器已经都可以连通,问题就是上面的第 3) 点,我的客户端使用了中间层定义的一个叫 IUsers 的接口,如果中间层程序不在客户端运行一次并保留的话,客户端就无法访问远程机器上的 IUsers,提示"Dll加载错误",猜测可能是DCOM调用远程的接口时需要这个程序在本地来"模拟"执行?有没有替代的方法?望高手指点一下,谢谢!
 
一直感觉DCOM很难配置,以前经常是有时行有时又不行,就是不知道怎样配置是"一定"行的,于是下定决心经过一整天的反复测试,好像是找到了"一定行"的方法了:
1.网络环境:Win2000内部局域网。
2.中间层配置方式:
1) 打开控制面板->管理工具->计算机管理,将Guest账号启用,并清除密码。
2) 执行dcomcnfg,在"应用程序"中找到你的中间层应用,双击弹出属性框,并作以下配置:
选择"常规"页,将"默认身份验证级别"设置为"无"。
选择"位置"页,选取"在这台计算机上运行应用程序"选项。
选择"安全性"页,点击相应用的"编辑"按扭,确保将Guests组加入到相应用的权限中。
选择"身份标识"页,将用用户帐户设置为"交互式用户"。
3.客户端
1) 必须启用Guest帐号并清除密码。
2) 需发布midas相关dll,如midas.dll
3) 如果客户端使用到中间层定义的对象接口(interface),那么需要在客户端运行一次中间层程序(这一点还不是很明白为什么会这样??)。
经过以上配置,我所测试的机器已经都可以连通,问题就是上面的第 3) 点,我的客户端使用了中间层定义的一个叫 IUsers 的接口,如果中间层程序不在客户端运行一次并保留的话,客户端就无法访问远程机器上的 IUsers,提示"Dll加载错误",猜测可能是DCOM调用远程的接口时需要这个程序在本地来"模拟"执行?有没有替代的方法?望高手指点一下,谢谢!
 
中间层程序在客户端运行一次并保留后,会在注册表里添加相应的信息。
因为客户端程序并不是直接访问中间层的,而是通过操作系统的代理进行访问.
 
Dll加载错误指的可能是'midas.dll"加载错误,可用
regsvr32 ???/midas.dll注册一下
还有一个原因可能是应用服务器计算机名指错
还有一个原因,最后用后期绑定的方法调接口,如:dcomconnection1.Appserver.接口
这样就不用在客户端运行应用服务器一次了
 
IUsers的tlb弄到客服机注册下。
 
3) 如果客户端使用到中间层定义的对象接口(interface),那么需要在客户端运行一次中间层程序(这一点还不是很明白为什么会这样??)。
這個可以避免。方法:
在客戶端上
原來的
Iaaa(Appserver).SomeMethod();
改為
IaaaDisp(Appserver as IDispatch).SomeMethod();
就可以了,不過我是這樣用的:
全局變量:
App: IaaaDisp;
App := IaaaDisp(Appserver as IDispatch);
以後就
App.SomeMethod();
 
shaoyy,我按你的方法设置还是不行啊,还有其它的东东需要设置吗?
 
[red]初试DELPHI的DCOM编程
感觉DCOM的注册五花八门
无法清晰的把握注册的必须步骤
请各位大虾不吝赐教啊[/red][:(]
 
我也是啊
 
后退
顶部