[请教]COM和注册表的关系

wwfttelne 2003-12-13 04:02:56
最近我在学习COM。
我知道COM需要在注册表里面进行注册。
但是我对这其中的关系不是很了解。只是知道一些最基本的。
如下:
在HKEY_CLASSES_ROOT\CLSID写下自己编写的COM的CLSID,然后再在它的下面添加子键InprocServer32,然后添加一个未命名的值,也就是DLL文件的路径。
以上做法可以满足CoGetClassObject的需要。
但是,COM和注册表之间的关系就这么简单吗?
还有没有别的约定?
比如说:CLSIDFromProgID 这个函数中,需要在注册表里面的什么地方说明所谓的组件名?
请高手指点一下,或者给篇相关文档的连接看看。
谢谢先!
...全文
50 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwfttelne 2003-12-15
  • 打赏
  • 举报
回复
好的,我现在知道了。
madhappy 2003-12-14
  • 打赏
  • 举报
回复
这个东西你最好别自己添加
在cmd下面用:
regsvr32 <你的com地址>
这个命令

其实你自己添加也没关系,因为CLSID的值是唯一的.当你要调用组件时,操作系统通过CLSID值在注册表找到相应的键,然后读取信息,比如com名称(就是你说的组件名)啊,com路径啊,就是这样.没有其他东西了

不明白你打开注册表,着一个com的实例看一下就知道了.
天限天空 2003-12-13
  • 打赏
  • 举报
回复
你可以用 注册表 监视工具, 跟踪一下,就知道了
regmon
superS 2003-12-13
  • 打赏
  • 举报
回复
在HEKY_CLASSWS_ROOT下面,最开始的那些以"."开头的是文件类型的注册,比如.doc用word打开等。

其它大部分的用"."分成一段一段的都是ProgID。他们的作用主要是给VB或JAVA这种脚本程序来创建组件而使用的。因为脚本语言只能通过字符串来创建组件。打开一个ProgID可以看到CLSID键,之中的值就是搂主所说的CLSID下面的那些值。还有其他键,如当前版本等。

如果是exe中的组件则还有其他注册信息,如HKEY_CLASSES_ROOT\interface中的代理注册等。InprocServer32也变成了LocalServer32。

《com技术内幕》的不同章节有比较详细的解释。
luohualiushui 2003-12-13
  • 打赏
  • 举报
回复
在HKEY_CLASSES_ROOT\ProgID下,写入你组件ProgID,在其子键再加入对应的clsid
这样你CLSIDFromProgID 才能正确运行

3,248

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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