认识CLSID和GUID

什么是CLSID呢,为了更好的理解,先来做几个有趣的试验。

首先,任意新建一个文件夹,如新建一个名为gdi的文件夹

然后,重命名这个文件夹,在gdi后面加上.{20D04FE0-3AEA-1069-A2D8-08002B30309D},注意中间有个小数点

确定,看看文件夹变成什么样子了?是不是和“我的电脑”变成一个模样了?双击它试试看,打开的也是“我的电脑”

其实,我们在后面加的这一串字符就称为CLSID,它是Globally Unique Identifier的简称,中文翻译为“全球唯一标示符”,在Windows系统中也称之为Class ID,缩写为CLSID。对于不同的应用程序,文件类型,OLE对象,特殊文件夹以及各种系统组件,Windows都会分配一个唯一表示它的ID代码,也就是我们上面看到的那一串字符。

CLSID是一个128位的随机数,为了确保它的随机性,避免重复,它的算法主要是从两个方面入手:

  1. 一部分数字来自于系统网卡的序列号,由于每一个网卡的MAC地址都不一样,因此产生的ID也就会有差异。

  2. 另外一部分数字来自于系统的当前时间。

有人计算过按照上面两种方式得到ID的随机性,得出的结论是:即使一台电脑每秒产生10000000个CLSID,也可以保证3240年不会重复。(拷贝百度)

在注册表中展开HKEY_CLASSES_ROOT\CLSID\,在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结构体转换成字符串

赞(0) 打赏
取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

    暂无评论...