什么是CLSID呢,为了更好的理解,先来做几个有趣的试验。
首先,任意新建一个文件夹,如新建一个名为gdi的文件夹
然后,重命名这个文件夹,在gdi后面加上.{20D04FE0-3AEA-1069-A2D8-08002B30309D},注意中间有个小数点
确定,看看文件夹变成什么样子了?是不是和“我的电脑”变成一个模样了?双击它试试看,打开的也是“我的电脑”
其实,我们在后面加的这一串字符就称为CLSID,它是Globally Unique Identifier的简称,中文翻译为“全球唯一标示符”,在Windows系统中也称之为Class ID,缩写为CLSID。对于不同的应用程序,文件类型,OLE对象,特殊文件夹以及各种系统组件,Windows都会分配一个唯一表示它的ID代码,也就是我们上面看到的那一串字符。
CLSID是一个128位的随机数,为了确保它的随机性,避免重复,它的算法主要是从两个方面入手:
- 一部分数字来自于系统网卡的序列号,由于每一个网卡的MAC地址都不一样,因此产生的ID也就会有差异。
- 另外一部分数字来自于系统的当前时间。
有人计算过按照上面两种方式得到ID的随机性,得出的结论是:即使一台电脑每秒产生10000000个CLSID,也可以保证3240年不会重复。(拷贝百度)
在注册表中展开HKEY_CLASSES_ROOTCLSID,在CLSID分支下面就可以看到很多的ID,这些ID对应的都是系统里面不同的程序,文件,系统组件等,上面试验中在文件夹名字后面加上的字符串对应的就是“我的电脑”,所以才会出现试验中的现象。
利用这个原理,可以用来隐藏文件,将需要隐藏的文件统一放到一个文件夹里面,然后按照上面试验的操作把这个文件夹变成“我的电脑”或者“控制面板”等其他的样子,不知道的人是很难发现的^_^。
注意:如果这样隐藏文件的话,如果自己想要打开此文件夹,可以在cmd里面用rename命令重命名文件夹,如rename gid.{21EC2020-3AEA-1069-A2DD-08002B30309D} gdi,这样就可以恢复对此文件夹的正常访问了。
提醒,在Windows下用Winrar也可以重新命名文件夹。
下面列出一些常文件夹和项目的CLSID
我的电脑: {20D04FE0-3AEA-1069-A2D8-08002B30309D}
回收站: {645FF040-5081-101B-9F08-00AA002F954E}
控制面板: {21EC2020-3AEA-1069-A2DD-08002B30309D}
IE: {871C5380-42A0-1069-A2EA-08002B30309D}
当我们要在程序中使用这些CLSID字符串中,需先转换成GUID结构体
CLSIDFromString 将CLSID字符串转换成GUID结构体
StringFromCLSID 将GUID结构体转换成字符串