MS Com注册表信息及其注册过程

本文详细介绍了COM组件在注册表中的信息,包括CLSID、InprocServer32、LocalServer32子键及其作用。还讨论了COM组件的分类机制,如CATID和Component Categories。此外,阐述了COM组件的注册操作,特别是自注册组件的DLLRegisterServer和DLLUnregisterServer函数,以及进城外组件的/RegServer和/UnregServer命令行参数。
摘要由CSDN通过智能技术生成

一 、COM组件的在注册表的信息

  1. com注册信息全部存在于注册表的HKEY_CLASSES_ROOT键下,最主要的是CLSID子健。在CLS子键下,列除了当前机器上所有组件的信息。
  2. 如果是进程内组件,则CLSID 下包含了 InprocServer32子键,该自己的缺省值为组建程序的全路径;如果是进城外组件,CLSID子键下包含了LocalServer32子键,该子键缺省值为组件程序的全路径。 
  3. 在CLSID子键下海可以包含一些其他相关信息,如 版本信息, OLE组件的InprocHandle32子键,组件程序的图标信息,组建程序的类型库等。
  4. 在HKEY_CLASSES_ROOT键下,除了CLSID子键与COM组件直接相关外,还有Interface子键给出了当前系统中一些COM接口的配置信息,以及TypeLib子键给出了当前系统中类型库的信息。例如,进城外组件的接口配有对应的代理和存根DLL,这些信息被保存在Interface子键下的ProxyStub 或者ProxyStubClsid32中。 
  5. 标示一个COM对象的另外一个字符串标示:ProgID被直接放在HKEY_CLASSES_ROOT键下, 例如在键下可以直接找到"COMctl.TreeCtrl"子键,这是树形控件的ProgID。而且该键值下还可以再包含 CLSID和CurVer这样的子键。 函数CLSIDFromProgID ProgIDFromCLSID可以分别转换CLSID ProgID。
  6. COM提供了对注册表中组件分类机制:如果COM支持同样一组接口,则分到同一个类中。 一个COM对象可以分到多个类中。 例如所有的自动化对象都支持IDispatch接口,则它们可以归成一类 "Automation Objects"。  类别信息可以用128位的GUID描述,称为:CATID。 在每个对象的CLSID键下包含一个"Implement Categories"子键,包含了该对象的隶属的类别列表。
  7. 在HKEY_CLASSES_ROOT键下有一个子键"Component Categories",包含了当前机器山所有的组件类别, 其中列出了每个组件的CATID。 使用vc提供的oleview.exe 可以列出当前机器上所有的类别信息。

二、 COM组件的注册操作

  1. 组件程序分为自注册组件程序(self-reistering)与非自注册组件程序。对于非注册程序必须编写单独的注册程序,这里不讨论。
  2. 进城内的自注册组件程序是动态库DLL,需要提供两个入口函数供注册工具regsvr32:bool DLLRegisterServer(...)  和  bool DLLUnregisterServer(...)。
  3. 进城外的组件程序本身是可执行程序,而且他不能提供入口函数供其他程序调用,因此在COM规范中规定,支持自注册的进城外组件必须支持两个命令行参数: /RegServer 和 /UnregServer 或者可以是:-RegServer 和 -UnregServer。 如果程序注册成功则返回0, 否则返回非0值表示注册失败。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值