簡介
HKEY_CLASSES_ROOT其實就是HKEY_LOCAL_MACHINE\SOFTWARE\Classes,但是在HKEY_CLASSES_ROOT窗編輯相對來說顯得更容易和有條理。
HKEY_CLASSES_ROOT包含了所有應用程式運行時必需的信息:
在檔案和應用程式之間所有的擴展名和關聯;
![](/img/3/08c/nBnauM3X0gzM0IDN0ADO2kzM0MTM2gjM1kTMwADMwAjMxAzLwgzL4MzLt92YucmbvRWdo5Cd0FmLwE2LvoDc0RHa.jpg)
類的ID數字(所要存取項的名字用數字來代替);
用於應用程式和檔案的圖示;
在註冊表中HKEY_CLASSES_ROOT是系統中控制所有數據檔案的項。這個在Win95和Winnt中是相通的。HKEY_CLASSES_ROOT控制鍵包括了所有檔案擴展和所有和執行檔案相關的檔案。它同樣也決定了當一個檔案被雙擊時起反應的相關應用程式。
HKEY_CLASSES_ROOT被用作程式設計師在安裝軟體時方便的傳送信息,在Win95和Winnt中,HKEY_CLASSES_ROOT和HKEY_LOCAL_MACHINE\Software\Classes是相同的。程式設計師在運行他們的啟動程式時不需要擔憂實際的位置,相反的,他們只需要在HKEY_CLASSES_ROOT中加入數據就可以了。
在Windows用戶圖形界面下,每件事----每個檔案,每個目錄,每個小程式,每個連線,每個驅動---都被看做一個對象;每個對象都有確定的屬性和它聯繫。HKCR包含著對象類型和它們屬性的列表。HKCR主要的功能被設定為:
一個對象類型和一個檔案擴展名關聯
一個對象類型和一種圖示關聯
一個對象類型和一個命令行動作的關聯
定義對象類型相關選單選項和定義每一個對象類型屬性選項
在Win95中,相關選單就是當你滑鼠右擊一個對象時所彈出的選單;屬性就是當你選擇屬性項後一個展開的對話框。用簡單術語來說就是在改變HKCR中的設定可以改變一個給定檔案擴展名預設的關聯。改變一個檔案類型的預設圖示,和添加或者刪除給定對象類型的彈出選單內容(或者所有的對象類型)
HKCR包括了三種基本類型的子鍵
\??? 或者檔案擴展名子鍵
檔案擴展名子鍵在彈出選單上連線檔案擴展名到對象類型和相關操作,屬性項,和相關操作。
\object 類型子鍵
對象類型子鍵定義了一個對象類型在它預設圖示的項,它的彈出選單和屬性項,它的相關操作和它的CLSID連線。
CLSID 子鍵
在Windows下每件事都被用一個數字取代它的名字來對待。就象人往往是用名字來處理事情一樣。CLSID是標識所有列出的圖示,應用程式,目錄,檔案類型等等對象的數字。是微軟為製造商分配的,每一個都必須是唯一的。製造商將CLSID放入安裝程式檔案這樣就可以在安裝時更新註冊表。
註冊表是應用程式進行時它們需要關於做什麼的指示的資料庫。比如說,假定你有一個微軟Excel 7電子數據表的Word 7文檔,當你在Word中雙擊這個電子數據表,應用程式選單就會變成Excel的選單而且電子數據表進入編輯狀態,就好像你在Excel中一樣。它是如何知道該做什麼呢?每個Excel 7創建的檔案都有Excel的CLSID連線。Word讀這個CLSID後,到註冊表中尋找指示,依賴CLSID下的數據運行.DLL檔案或者應用程式。
CLSID子鍵為對象類型提供了OLE和DDE信息和圖示。相關選單,或者包含在它子鍵中的屬性項信息。這個可能是多數讓人看到後覺得“恐怖”的鍵。每個CLSID數必須是唯一的,實際上,為了這個目的微軟已經出產了CLSID-產生程式--這個結果導致你往往得到32位16進制的數字串,除非你是程式設計師,否則多數部分鍵看起來是很枯燥的。它們包括記憶體管理模式,客戶機/伺服器配置,和OLE處理的.dll連線。
1)shell:Shell鍵有個一”action“子鍵,如同”open“一樣,這裡有一個command子鍵;command子鍵有一個預設句值,它包含了運行程式的命令行。將一個”open“子鍵放在一個對象類型的shell子鍵中會在這個對象類型的彈出選單上多出一個”open“選項,給這個open子鍵一個command(預設命令行"C:\Windows \Notepad.exe %1")子鍵會使得打開這個對象類型時使用筆記本做為預設應用程式。其他操作選項包括View,Print,Copy,Virus,Scan等等。
2)shellex:Shellex鍵有一個子鍵。它們包含的每一個子鍵指向一個為對象類型執行OLE和DDE功能的CLSID項(比如說快速查看,一個選單處理子鍵下指向一個有句值的CLSID鍵列出了包含了檔案瀏覽功能的.dll檔案)
3)shellnew:ShellNew包含了一個“command”句,它包含了一個打開對象類型“新”檔案的命令行。
4)DefaultIcon:DefaultIcon子鍵包含了一個“default”句,它包括了一個指向圖示的命令行(比如說,"C:\Windows \System \shell32.dll,2" 2就是從0數的第三個圖示,記住,是在Shell32.dll中的)
除了和它們擴展名關聯擴展名和檔案類型以外,它們在HKEY_CLASSES_ROOT還有很多項。所有它們的項也都適用於nt,如界面和應用程式的執行。通常你將編輯僅僅一小部分這樣的項。除了彈出選單提示以外,所有包含在這裡的項只會在安裝應用程式,在程式中設定調整或者創造關聯時被改變。
沒有HKEY_CLASSES_ROOT你是不能啟動系統的;你手工編輯它真的是很困難。HKEY_CLASSES_ROOT是你需要註冊標一個很重要的原因:應用程式的控制和操作這個系統。看到它的尺寸和這個處理鍵的複雜程度,SYSTEM.INI 和 WIN.INI不再夠用也是不用驚奇的。