ProgID程序员给CLSID指定的容易记住的名字
ProgID命名约定:<Program>.<Component>.<Version>
AppID:将某个APPID(应用程序ID)映射成某个远程服务器名称。分式COM(DCOM)将用到此关键字
组件类别:将CATID(组件类别ID)映射成某个特定的组件类别
Interface:将IID映射成某个接口相关的信息,这些信息主要用于跨进程边界使用接口的情况
Licenses:保存的是授权使用COM组件的一些认可信息
TypeLib:类型库关键字保存的是关于接口成员函数所用参数的信息和其他一些信息,可以将一根LIBID映射成存储类型库的
文件名称
ProgID及与版本无关的ProgID被列在CLSID下面
ProgID的主要作用是获取相应的CLSID
与版本号无关的ProgID也直接被列在HKEY_CLASSES_ROOT下面,他们另外一个关键字CurVer,其缺省值为组件当前版本的
ProgID
ProgID和CLSID的转换:CLSIDFromProgID,ProgIDFromCLSID
组件的自注册:STDAPI DllRegisterServer(); STDAPI DllUnRegisterServer
1.在HKEY_CLASSES_ROOT下查找ProgID,格式<Program>.<Component>.<Version>
2.在ProgID下,查看CLSID子项的值
3.在HKEY_CLASSES_ROOTCLSID下查找CLSID的值,里面将包含InprocServer32,ProgID,类型库,和版本的几个子项
4.在HKEY_CLASSES_ROOTTypeLib下,查找ClassID TypeLibID,将找到包含有关您的组件的类型库的信息
5.在HKEY_CLASSES_ROOTInterface下,查找该ClassID TypeLibID,查找到所有接口ID
COM库在接到客户程序的请求后,会到注册表中检索COM对象的注册表条目,以此来定位COM对象
COM对象要想成功的被COM库定位,则需要至少在注册表中写入HKEY_CLASSES_ROOTProgID注册和HKEY_CLASSES_ROOTCLSID
注册
InProcServer32的字符串值,代表此COM类的载体应当是个动态链接库,指明了组件所在的物理位置,对COM库查找和定位
组件起了决定性作用
LocalServer32:指定一个32字节的本地应用程序的路径
Word.Application->CLSID
可执行程序的路径:LocalServer,LocalServer32
查找ProgID方法,在注册表的键值中查找可执行程序的名字