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的函數,主要是根據當時的時間、機器地址等信息動態產生,理論上可保證全球唯一。
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的小應用
1、 調用CLSID打開系統文件夾
打開我的電腦
開始--運行è輸入:::{20D04FE0-3AEA-1069-A2D8-08002B30309D}
打開回收站
開始--運行è輸入:::{645FF040-5081-101B-9F08-00AA002F954E}
以上方法還可以通過命令提示符的start命令來調用以及API函數的ShellExecute來調用。
2、 通過CLSID來簡單加密文件夾
新建一個文件夾,將其擴展名改為系統對應CLSID的擴展名,該文件夾立即變成了對應的系統圖標,並且打開此文件夾與打開系統文件夾是一樣的操作,也就是其中放的文件或者文件夾已經看不到了,必須去掉擴展名方可打開,示例:
我的電腦. {20D04FE0-3AEA-1069-A2D8-08002B30309D}
上述文件夾改名后,打開便是我的電腦,而非原文件夾本身。
3、 生成新的CLSID來創建新的系統圖標
這種方式常被惡意軟件調用,用於在桌面上生成一個IE圖標,指向惡意網站,並且這種圖標無法通過右鍵刪除,通常桌面下顯示的系統圖標可以在以下注冊表鍵值中找到:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\
通過對比上述注冊表鍵值的CLSID與存放在系統注冊表位置為:HKEY_CLASSES_ROOT\CLSID\中的值,可以區別出來到底哪個是惡意CLSID,同時也是通過這樣的方法來刪除那些在桌面上刪除不掉的“系統”圖標