com 关于CLSID
来源:互联网 发布:v meca 编程 编辑:程序博客网 时间:2024/06/15 09:30
CLSID的生成
CLSID是指windows系统对于不同的应用程序,文件类型,OLE对象,特殊文件夹以及各种系统组件分配一个唯一表示它的ID代码,用于对其身份的标示和与其他对象进行区分。
先得说下GUID,它是Globally Unique Identifier的简称,中文翻译为“全局唯一标示符”,在Windows系统中也称之为Class ID,缩写为CLSID。
CLSID像人身份证一样,是个类的唯一标识:
ID是英文IDentity的缩写,是身份标识号码的意思,就是一个序列号,也叫帐号,是一个编码,而且是唯一的。
class是对某种类型的对象定义变量和方法的原型,是ID的样式或属性的补充。
在注册表中展开HKEY_CLASSES_ROOT\CLSID\,在CLSID分支下面就可以看到很多的ID,这些ID对应的都是系统里面不同的程序,文件,系统组件等。
CLSID是一个128位的随机数,为了确保它的随机性,避免重复,它的算法主要是从两个方面入手:
1. 一部分数字来自于系统网卡的序列号,由于每一个网卡的MAC地址都不一样,因此产生的ID也就会有差异。
2. 另外一部分数字来自于系统的当前时间。
有人计算过按照上面两种方式得到ID的随机性,得出的结论是:即使一台电脑每秒产生10000000个CLSID,也可以保证3240年不会重复。
CLSID是指windows系统对于不同的应用程序,文件类型,OLE对象,特殊文件夹以及各种系统组件分配一个唯一表示它的ID代码,用于对其身份的标示和与其他对象进行区分。
先得说下GUID,它是Globally Unique Identifier的简称,中文翻译为“全局唯一标示符”,在Windows系统中也称之为Class ID,缩写为CLSID。
CLSID像人身份证一样,是个类的唯一标识:
ID是英文IDentity的缩写,是身份标识号码的意思,就是一个序列号,也叫帐号,是一个编码,而且是唯一的。
class是对某种类型的对象定义变量和方法的原型,是ID的样式或属性的补充。
在注册表中展开HKEY_CLASSES_ROOT\CLSID\,在CLSID分支下面就可以看到很多的ID,这些ID对应的都是系统里面不同的程序,文件,系统组件等。
CLSID是一个128位的随机数,为了确保它的随机性,避免重复,它的算法主要是从两个方面入手:
1. 一部分数字来自于系统网卡的序列号,由于每一个网卡的MAC地址都不一样,因此产生的ID也就会有差异。
2. 另外一部分数字来自于系统的当前时间。
有人计算过按照上面两种方式得到ID的随机性,得出的结论是:即使一台电脑每秒产生10000000个CLSID,也可以保证3240年不会重复。
为了避免冲突,微软使用GUID作为CLSID,有生成GUID的函数,主要是根据当时的时间、机器地址等信息动态产生,理论上可保证全球唯一。
生成GUID的C++代码//--生成GUID的代码//--相关程序/微软guidgen.exe#include <objbase.h>#include <stdio.h>//--生成GUIDconstchar* newGUID(){ staticcharbuf[64] = {0}; GUID guid; if(S_OK == ::CoCreateGuid(&guid)) { _snprintf(buf,sizeof(buf) ,"{%08X-%04X-%04x-%02X%02X-%02X%02X%02X%02X%02X%02X}" , guid.Data1 , guid.Data2 , guid.Data3 , guid.Data4[0] , guid.Data4[1] , guid.Data4[2] , guid.Data4[3] , guid.Data4[4] , guid.Data4[5] , guid.Data4[6] , guid.Data4[7] ); } return(constchar*)buf;}intmain(intargc,char* argv[]){ //--COM CoInitialize(NULL); printf(newGUID()); printf("\r\n"); //--COM CoUninitialize(); return0;}
0 0
- com 关于CLSID
- 检索COM组件 CLSID错误
- 关于 direct show 的clsid
- 检索 COM 类工厂中 CLSID 为
- 检索 COM 类工厂中 CLSID
- COM对象的标识——CLSID
- COM中GUID和UUID、CLSID、IID
- COM中GUID和UUID、CLSID、IID
- COM中GUID和UUID、CLSID、IID
- COM中GUID和UUID、CLSID、IID
- COM中GUID和UUID、CLSID、IID
- COM中GUID和UUID、CLSID、IID
- COM中GUID和UUID、CLSID、IID
- COM中GUID和UUID、CLSID、IID
- COM中GUID和UUID、CLSID、IID
- COM中GUID和UUID、CLSID、IID
- CLSID
- CLSID
- storyboard中使用segue给navigationBar设置标题
- C/C++基础笔试题1.1.2(运算符十问之解)
- 使用plist创建精灵并执行动画
- poj 3414 Pots 简单bfs
- vs2012 未能加载visual c++ language manager package
- com 关于CLSID
- PreferenceActivity 与 singleTask 之间的冲突
- Ajax实现异步请求实例
- Python中单元测试框架Nose的安装
- Matlab绘图颜色
- 图像智能打标签‘神器’-AlchemyVision API
- Spring3自定义环境配置 <beans profile="">
- Linux系统挂载数据盘
- java静态导入