clsid,Clsid生成
在Windows操作系统中,CLSID(ClassID)作为全球唯一标识符,用于标识不同的应用程序、文件类型、OLE对象、特殊文件夹以及各种系统组件。小编将深入探讨CLSID的生成过程、应用场景以及其重要性。
1.CLSID生成原理
CLSID的生成主要依赖于GUID(GloallyUniqueIdentifier)的生成。GUID是由微软提出的,用于生成全球唯一的标识符。其生成方式主要包含两部分:
一部分来自于随机数生成器,确保每个GUID都是随机的。另一部分来自于系统的当前时间,保证GUID的唯一性。
通过上述两种方式的结合,即使一台电脑每秒产生10000000个CLSID,也可以保证3240年不会重复。
2.CLSID的应用场景
CLSID在Windows操作系统中有着广泛的应用场景,以下列举一些常见的应用:
修改系统文件夹的图标:只需进入注册表的HKEY_CLASSES_ROOT\CLSID中,查找到系统文件夹的类ID,然后修改DefaultIcon中的图标文件路径即可。
修改其他文件的默认图标:需要在HKEY_CLASSES_ROOT\CLSID\"
文件类型"
DefaultIcon中修改图标文件的路径。
驱动器图标修改:与文件夹图标修改类似,通过修改注册表中对应的CLSID,可以改变驱动器的图标。3.CLSID的组成结构
CLSID是一个128位的随机数,用于确保其唯一性。它由以下几部分组成:
前四个字节:版本号,通常为0x0200。
接下来的三个字节:制造商标识符,通常为微软的标识符。
之后的三个字节:序列号,用于区分不同的GUID。4.CLSID的生成函数
微软提供了生成GUID的函数,主要根据当时的时间、机器地址等信息动态生成。以下是一个简单的示例代码:
include"stdafx.h"
include
include
include
OOLCreateCLSID(GUID&
guid){
OOLResult=FALSE
if(S_OK==CoInitialize(NULL)){
if(S_OK==::CoCreateGuid(&
guid)){
Result=TRUE
CoUninitialize(...)
returnResult
5.CLSID在类工厂中的应用
CLSID在类工厂中扮演着重要角色。例如,在注册Filter时,需要使用CLSID来标识特定的类。以下是一个简单的CMyFilter类的实现:
classCMyFilter{
ulic:
CMyFilter(){
在类工厂中使用CLSID时,需要确保CLSID的唯一性,以避免冲突。
CLSID在Windows操作系统中扮演着重要的角色,它确保了不同应用程序、文件类型、OLE对象等的唯一性。通过小编的介绍,相信大家对CLSID有了更深入的了解。
- 上一篇:捷豹xel,捷豹xel价格