请大家救救我一个关于DCOM的问题

Ray 2000-04-14 01:07:00
我编写了一基于DCOM的程序,在SERVER端运行一切正常,但一发布
到WIN98中运行时就总出现“类没有注册”(已在WIN98和NT中注册)
是否要配置DCOMcnfg.exe
请各位高手指教应如何配置
...全文
188 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ClickNo 2000-04-19
  • 打赏
  • 举报
回复
1,确认你是NT的Domain User.
2.Dcom 使用的MTS DataModal Or Remote DataModal?
3.Client 端不用任何配置,在Server端用Dcomcnfg.exe 肯定行
softdoctor 2000-04-16
  • 打赏
  • 举报
回复
查一下你有没有访问服务器的权限,
如果没有在该NT服务器上创建用户。
在用TDCOMCONNECTION时指定服务器名
可免去修改注册表相关项。

Ray 2000-04-15
  • 打赏
  • 举报
回复
softdoctor您好,很多谢您的指教。但问题并不能完全解决。我的DCOM程序的DLL
运行于NT的域服务器中,客户端为PWIN98,我按照你的方法在服务器端
修改了注册表,但却出现“拒绝访问”的错误,我不想直接调用CoCreateInstance
方法。只是通过TDCOMCONNECTION对服务器进行连接,请麻烦您再指导一下
应如何处理。(我最希望该服务器能在NT独立服务器中运行)
softdoctor 2000-04-14
  • 打赏
  • 举报
回复
将你的的代理DLL注册到客户机器上
sadpacific 2000-04-14
  • 打赏
  • 举报
回复
你的服务器是基于.dll的还是.exe的?
如果是.exe的,通过配置dcomcnfg。exe应该可以解决问题;
如果是。dll的,
以下选自netmare的答复:
如果你的COM组件是dll型的进程内服务器,在服务器端的注册表中加入
[HKEY_CLASS_ROOT\AppID\{ur guid}]="inprocess"
[HKEY_CLASS_ROOT\AppID\{ur guid}]
DllSurrogate=""
[HKEY_CLASS_ROOT\CLSID\{ur guid}]
AppID={ur guid}
在客户端的注册表中加入
[HKEY_CLASS_ROOT\AppID\{ur guid}]
RemoteServer="ur server name"
[HKEY_CLASS_ROOT\CLSID\{ur guid}]
AppID={ur guid}

这样当你CoCreateInstance时,服务器端会通过缺省代理DllHost.exe来DllGetObject你的dll,你也可以不用DllHost.exe,通过在DllSurrogate项中指定你的代理,但定制代理较麻烦,要实现ISurrogate,且代理程序要用CoRegisterSurrogte来注册自己.
在客户端要必须注意注册表中CLSID下不能有InprocServer32和LocalServer32的设置,否则CoCreateInstance时会忽略掉注册表中AppID下的RemoteServer的设置,而在本机上请求对象.
如果用CoCreateInstanceEx,指定用CTX_REMOTE_SERVER,COSERVERINFO中指定主机名,这样就可以在远地运行了,且这样的效率比用CoCreateInstance高,因为CoCreateInstanceEx可以一次请求多个接口,省去了多趟通信.

fyje 2000-04-14
  • 打赏
  • 举报
回复
必须在客户端配置DCOM,并指定ComputerName属性为SERVER的名字或者IP地址。

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧