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

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

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

不明白你打开注册表,着一个com的实例看一下就知道了.
  • 打赏
  • 举报
回复
newkey007 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 才能正确运行
  • 打赏
  • 举报
回复
相关推荐
发帖
ATL
加入

3229

社区成员

ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
申请成为版主
帖子事件
创建了帖子
2003-12-13 04:02
社区公告
暂无公告