如何配置注册表使COM转化为DCOM运行

guo 2000-03-03 08:49:00
我发现简单地通过Dcomcnfg.exe程序不能使COM转化成DCOM运行,而且该程序只能修改EXE类型的COM组件.请各位帮帮忙!
...全文
264 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
guo 2000-03-04
  • 打赏
  • 举报
回复
向netmare致谢,虽然我没有来的及试,但感觉使用你的方法,问题应该能解决。
对dllhost.exe程序我非常生熟,我的机子中好象没有,请作说明,随后我将剩余分数一并送上。
guo 2000-03-04
  • 打赏
  • 举报
回复
感谢!感谢!netmare,我刚刚找到了这个程序。从日期看它应该是Service Pack3的。
佩服,好,仅以80分表示感谢.
netmare 2000-03-04
  • 打赏
  • 举报
回复
win98下dllhost.exe在你的$WINDOWSDIR\system下,但我不知道是不是因为我装了vs98才有的.nt从servie pack2才开始支持代理,而dllhost.exe是系统为此提供的缺省代理程序,在早期nt下远程服务器必须是exe型的,当然也就没有dllhost.exe了.我在nt(干净的nt除了sp6和option pack4外没装其他东西)下试过把我以前作的一个dll组件用以上述配置作为DCOM Remote Server,然后在win98下运行客户端程序(用CoCreteInstance创建对象),组件可以正常的在nt上被创建和调用,所以nt+spx x>=2就可以了.
dllhost.exe才24k,你要是实在没有,我可以mail一个给你.
netmare 2000-03-03
  • 打赏
  • 举报
回复
如果你的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可以一次请求多个接口,省去了多趟通信.
CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《COM技术内幕——微软组件对象模型》一书的随书源代码 COM技术内幕——微软组件对象模型 基本信息 原书名: Inside COM: Microsoft's Component Object Model with Cdrom 原出版社: Microsoft Press 作者: (美)Dale Rogerson 译者: 杨秀章 丛书名: 微软版权图书 出版社:清华大学出版社 ISBN:730203320X 上架时间:2001-10-11 出版日期:1999 年3月 页码:293 版次:1-1 所属分类:计算机 > 软件与程序设计 > COM/DCOM/ATL/COM+ 内容简介    微软公司的组件对象模型(COM)作为一种重要的工具已崭露头角,它是微软迈向分布式计算的基础。不论现在还是将来,它都是定制应用程序的一种强大的方法。并且它是OLE和ActiveX 的基础。COM帮助你理解未来的程序开发技术,而这本书帮助你理解COM。在本书中你将发现:构建优美的COM组件的清晰、简单、实用的规则;COM是如何易学易用,特虽是对那些熟练掌握C++ 的人;循序渐进地介绍COM设计;以代码形式给出的大量实例。    《COM技术内幕》适合于中、高级C++程序员;COM、ActiveX和OLE程序员;对组件设计感兴趣的研究人员;以及那些当COM移植到UNIX、MVS和其他环境时想要使用到COM的程序员。 编辑推荐    微软公司的组件对象模型(COM)作为一种重要的工具已崭露头角,它是微软迈向分布式计算的基础。不论现在还是将来,它都是定制应用程序的一种强大的方法。并且它是OLE和ActiveX 的基础。COM帮助你理解未来的程序开发技术,而这本书帮助你理解COM。在本书中你将发现:构建优美的COM组件的清晰、简单、实用的规则;COM是如何易学易用,特虽是对那些熟练掌握C++ 的人;循序渐进地介绍COM设计;以代码形式给出的大量实例。 目录 封面 -17 扉页 -16 版权 -15 译者前言 -14 目录 -13 引言 -6 第1章 组件 1 1.1 使用组件的优点 2 1.1.1 应用程序的定制 2 1.1.2 组件库 3 1.1.3 分布式组件 3 1.2 对组件的需求 4 1.2.1 动态链接 4 1.2.2 信息封装 5 1.3 COM 6 1.3.1 COM组件是…… 7 1.3.2 COM不是…… 7 1.3.3 COM库 8 1.3.4 COM方法 8 1.3.5 COM超越了用户的需要 8 1.4 本章小结 9 第2章 接口 11 2.1 接口的作用 11 2.1.1 可复用应用程序架构 12 2.1.2 COM接口的其他优点 13 2.2 COM接口的实现 13 2.2.1 编码约定 14 2.2.2 一个完整的例子 15 2.2.3 非接口通信 18 2.2.4 实现细节 18 2.3 接口理论:第二部分 20 2.3.1 接口的不变性 20 2.3.2 多态 20 2.4 接口的背后 21 2.4.1 虚拟函数表 21 2.4.2 vtbl指针及实例数据 23 2.4.3 多重实例 24 2.4.4 不同的类,相同的vtbl 24 2.5 本章小结 26 第3章 QueryInterface函数 27 3.1 接口查询 28 3.1.1 关于IUnknown 28 3.1.2 IUnknown指针的获取 29 3.1.3 关于QueryInterface 29 3.1.4 QueryInterface的使用 30 3.1.5 QueryInterface的实现 31 3.1.6 关于类型转换 32 3.1.7 一个完整的例子 35 3.2 关于QueryInterface的实现规则 40 3.2.1 同一IUnknown 40 3.3.2 客户可以获取曾经得到过的接口 41 3.2.3 可以再次获取已经拥有的接口 41 3.2.4 客户可以从任何接口返回到起始接口 42 3.2.5 若能够从某接口获取某特定接口,则从任意接口都将能够获取此接口 42 3.3 QueryInterface定义了组件 43 3.3.1 接口集 44 3.4 新版本组件的处理 44 3.4.1 何时需要建立一个新版本 46 3.4.2 不同版本接口的命名 46 3.4.3 隐含

6,849

社区成员

发帖
与我相关
我的任务
社区描述
Windows 2016/2012/2008/2003/2000/NT
社区管理员
  • Windows Server社区
  • qishine
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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