com组件中的注册表

COM组件主要是通过DLL来实现的,DLL暴露CreateInstance函数地址,客户程序加载对应组件的dll,然后调用CreateInstance得到组件的IUnknown接口,然后在调用QueryInterface查询组件支持的接口。

在实际使用ActiveX控件时,不需要每次用户程序使用输入组件的地址来加载组件,windows内部将组件的地址保存在了注册表中,用户程序使用组件时,可以通过组件的名字在注册表中查找组件的唯一标识符CLSID(也就是组件的UUID),并且找到组件的地址,从而加载组件。

注册表是一个由许多元素构成的层次结构,每一个元素均被称为一个关键字,每一个关键字可以包含一些列子关键字、一系列的值,如图所示,

COM组件只使用了注册表的第一个分支HKEY_CLASSES_ROOT,该分支下的以“.”开头的关键字是扩展名,记录每种类型的文件的打开方式。在HKEY_CLASSES_ROOT分支下有一个CLSID关键字,用于记录所有的com组件的CLSID与对应的组件名称(InProcserver32),InprocServer32保存了组件的具体位置

所有的组件都需要提供如下两个函数,用于将组件注册到注册表中:

STDAPI DllRegisterServer();

STDAPI DllUnregisterServer();

注册组件时,用户通过regsvr32.exe程序调用这两个函数,从而将组件注册到注册表中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值