打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
COM笔记-Widows 注册表
userphoto

2012.02.28

关注

Widows 注册表 

HKEY_CLASSES_ROOT在此关键字之下,可以看到有一个CLSID关键字。在CLSID关键字之下列有系统中安装的所有组件的CLSID。注册表CLSID是一个具有如下格式的串:00000010-0000-0010-8000-00AA006D2EA4

 

 

 

HKEY_CLASSES_ROOT的开头,列出的将是各种应用程序所注册的文件扩展名。在扩展名之后,可以看到许多其他的名字。此类名字的大多数被称作是ProgID,表示是程序员定义的标识符。某些名称表示的不是ProgID而是一些特殊的关键字.

  •  CLSID
  •  AppID—此关键字下的子关键字的作用是将某个APPID(应用程序ID)映射成某个远程服务器名称。分式COM(DCOM)将用到此关键字。
  •  组件类别—注册表的这一分支可以将CATID(组件类别ID)映射成某个特定的组件类别。
  •  Interface—此关键字用于将IID映射成与某个接口相关的信息。这些信息主要用于在跨进程边界使用接口的情况。
  •  Licenses—保存的是授权使用COM组件的一些认可信息。
  • TypeLib—类型库关键字所保存的是关于接口成员函数所用参数的信息。另外还有其他一些信息。此关键字可以将一个LIBID映射成存储类型库的文件名称。

 

ProgID所谓ProgID指的是程序员给某个CLSID指定的一个程序员易记的名称。

ProgID命名约定

<Program>.<Component>.<Version>

如下图:

 

在许多情况下,客户并不关心它所连接的组件的版本究竟是什么。因为组件经常会有一个与版本号无关的ProgID。此ProgID被映射成所安装的最新版本的组件。与版本无关的 的命名约定是将上面约定中的版本号去掉。

 

 

ProgID注册表格式

ProgID及与版本无关的ProgID被列在组件CLSID下面。

 

 

 

ProgID的主要作用是获取相应的CLSID。在每一个CLSID项中查找查个ProgID将是非常低效的。因此在 的下面也将直接列出ProgID。由于ProgID不是针对最终用户而定义的,因此ProgID关键字的缺省值为用户易记的名称。在 之下有一个名为CLSID的关键字,其缺省值为组件的CLSID。如下图所示:

 

 

 

 

与版本号无关的ProgID 也直接被列在HKEY_CLASSES_ROOT下面。它们还有另外一个关键字CurVer,其缺少值为组件当前版本的ProgID

 


ProgIDCLSID的转换

CLSIDFromProgID

ProgIDFromCLSID

 

组件的自注册

为把组件注册到注册表,在DLL一定要输出如下两个函数:

STDAPI DllRegisterServer();     // 注册

STDAPI DllUnregisterServer();   // 反注册

我们使用REGSVR32.exe注册某个组件或反注册某个组,其实就是调用这两个函数的。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
COM组件注册真相
VC知识库文章 - COM 组件设计与应用(二)——GUID 和 接口
COM中GUID和UUID、CLSID、IID
一句代码嵌入系统自带 ES6/ES2015 组件,不增加软件体积,直接调用 JavaScript 对象与函数。
ActiveX控件解析
零基础学习COM之COM库和类厂介绍
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服