簡介
CLSID是指windows系統對于不同的應用程序,文件類型,OLE對象,特殊文件夾以及各種系統組件分配一個唯一表示它的ID代碼,用于對其身份的标示和與其他對象進行區分。
先得說下GUID,它是Globally Unique Identifier的簡稱,中文翻譯為“全局唯一标示符”,在Windows系統中也稱之為Class ID,縮寫為CLSID。
構成分析
CLSID像人身份證一樣,是個類的唯一标識:
ID是英文IDentity的縮寫,是身份标識号碼的意思,就是一個序列号,也叫帳号,是一個編碼,而且是唯一的。
class是對某種類型的對象定義變量和方法的原型,是ID的樣式或屬性的補充。
在注冊表中展開HKEY_CLASSES_ROOTCLSID,在CLSID分支下面就可以看到很多的ID,這些ID對應的都是系統裡面不同的程序,文件,系統組件等。
運作基礎
CLSID是一個128位的随機數,為了确保它的随機性,避免重複,它的算法主要是從兩個方面入手:
1. 一部分數字來自于系統網卡的序列号,由于每一個網卡的MAC地址都不一樣,因此産生的ID也就會有差異。
2. 另外一部分數字來自于系統的當前時間。
有人計算過按照上面兩種方式得到ID的随機性,得出的結論是:即使一台電腦每秒産生10000000個CLSID,也可以保證3240年不會重複。
為了避免沖突,微軟使用GUID作為CLSID,有生成GUID的函數,主要是根據當時的時間、機器地址等信息動态産生,理論上可保證全球唯一。
CLSID應用
常見組件類對應的CLSID
我的文檔:450D8FBA-AD25-11D0-98A8-0800361B1103
我的電腦:20D04FE0-3AEA-1069-A2D8-08002B30309D
網上鄰居:208D2C60-3AEA-1069-A2D7-08002B30309D
回收站:645FF040-5081-101B-9F08-00AA002F954E
Internet Explorer:871C5380-42A0-1069-A2EA-08002B30309D
控制面闆:21EC2020-3AEA-1069-A2DD-08002B30309D
撥号網絡/網絡連接:992CFFA0-F557-101A-88EC-00DD010CCC48
任務計劃:D6277990-4C6A-11CF-8D87-00AA0060F5BF
打印機(和傳真):2227A280-3AEA-1069-A2DE-08002B30309D
曆史文件夾:7BD29E00-76C1-11CF-9DD0-00A0C9034933
公文包:85BBD920-42A0-1069-A2E4-08002B30309D
Web文件夾:BDEADF00-C265-11d0-BCED-00A0C90AB50F
網頁:25336920-03F9-11CF-8FD0-00AA00686F13
惡意廣告插件CLSID
上面說到電腦上所有的的軟件都有CLSID,那麼惡意插件也有。比如下面的:
僞造IE浏覽器:871C5380-42A0-1069-A2EA-08002B303099
如果你懷疑自己的電腦是否中了僞造IE浏覽器惡意廣告插件,進入注冊表,發現有這段CLSID,那麼就肯定中了。
CLSID的生成
生成GUID的C++代碼



















