1. 程式人生 > >登錄檔各鍵值儲存的內容及其對用的作用(功能)(不完善,有補充的評論指出供大家學習參考)

登錄檔各鍵值儲存的內容及其對用的作用(功能)(不完善,有補充的評論指出供大家學習參考)

從Windows 95開始,Microsoft在Windows中引入了登錄檔(英文為REGISTRY)的概念(實際上原來在Windows NT中已有此概念)。登錄檔是Windows 95及Windows 98的核心資料庫,表中存放著各種引數,直接控制著Windows的啟動、硬體驅動程式的裝載以及一些Windows應用程式執行的正常與否,如果該登錄檔由於鞭種原因受到了破壞,輕者使Windows的啟動過程出現異常,重者可能會導致整個Windows系統的完全癱瘓。因此正確地認識、修改、及時地備份以及有問題時恢復登錄檔,對Windows使用者來說就顯得非常重要了。

一、登錄檔的結構劃分及相互關係
WINDOWS的登錄檔有六大根鍵,相當於一個硬碟被分成了六個分割槽。
在“執行”對話方塊中輸入RegEdit,然後單擊“確定”按鈕,則可以執行登錄檔編輯器。

Windows 

98中文版的登錄檔Registry(System.dat、User.dat、Config.pol)的資料組織結構。
登錄檔的根鍵共六個。這些根鍵都是大寫的,並以HKEY_為字首;這種命令約定是以Win32 API的Registry函式的關鍵字的符號變數為基礎的。
雖然在登錄檔中,六個根鍵看上去處於一種並列的地位,彼此毫無關係。但事實上,HKEY_CLASSES_ROOT和HKEY_CURRENT_CONFIG中存放的資訊都是HKEY_LOCAL_MACHINE中存放的資訊的一部分,而HKEY_CURRENT_USER中存放的資訊只是HKEY_USERS存放的資訊的一部分。
HKEY_LOCAL_MACHINE包括HKEY_CLASSES_ROOT和HKEY_CURRENT_USER中所有的資訊。在每次系統啟動後,系統就映射出HKEY_CURRENT_USER中的資訊,使得使用者可以檢視和編輯其中的資訊。
實際上,HKEY_LOCAL_MACHINE\SOFTWARE\Classes就是HKEY_CLASSES_ROOT,為了使用者便於檢視和編輯,系統專門把它作為一個根鍵。同理,HKEY_CURRENT_CONFIG\SY-STEM\Current Control就是HKEY_LOCAL_MACHINE\SYSTEM\Current Control。
HKEY_USERS
中儲存了預設使用者和當前登入使用者的使用者資訊。HKEY_CURRENT_USER中儲存了當前登入使用者的使用者資訊。
HKEY_DYN_DATA儲存了系統執行時的動態資料,它反映出系統的當前狀態,在每次執行時都是不一樣的,即便是在同一臺機器上。
根據上面的分析,登錄檔中的資訊可以分為HKEY_LOCAL_MACHINE和HKEY_USERS兩大類,這兩大類的詳細內容請看後面的介紹。

二、六大根鍵的作用
在登錄檔中,所有的資料都是通過一種樹狀結構以鍵和子鍵的方式組織起來,十分類似於目錄結構。每個鍵都包含了一組特定的資訊,每個鍵的鍵名都是 和它所包含的資訊相關的。

1.HKEY_USERS
該根鍵儲存了存放在本地計算機口令列表中的使用者標識和密碼列表。每個使用者的預配置資訊都儲存在HKEY_USERS根鍵中。HKEY_USERS是遠端計算機中訪問的根鍵之一。

2.HKEY_CURRENT_USER
該根鍵包含本地工作站中存放的當前登入的使用者資訊,包括

使用者登入使用者名稱和暫存的密碼(注:此密碼在輸入時是隱藏的)。使用者登入Windows 98時,其資訊從HKEY_USERS中相應的項拷貝到HKEY_CURRENT_USER中。

3.HKEY_CURRENT_CONFIG
該根鍵存放著定義當前使用者桌面配置(如顯示器等)的資料,最後使用的文件列表(MRU)和其他有關當前使用者的Windows 98中文版的安裝的資訊。

4.HKEY_CLASSES_ROOT
根據在Windows 98中文版中安裝的應用程式的副檔名,該根鍵指明其檔案型別的名稱。
在第一次安裝Windows 98中文版時,RTF(Rich Text format)檔案與寫字板(WordPad)&127;聯絡起來,但在以後安裝了中文Word 6.0後,雙擊一個RTF檔案時,將自動啟用Word。存放在SYSTEM.DAT中的HKEY_CLASSES_ROOT,將替代WIN.INI檔案中的[Extensions]&127;小節中的設定項,它把應用程式與副檔名聯絡起來,它也替代了Windows 3.x中的Reg.dat檔案中的相似的設定項。

5.HKEY_LOCAL_MACHINE
該根鍵存放本地計算機硬體資料,此根鍵下的子關鍵字包括在SYSTEM.DAT中,用來提供HKEY_LOCAL_MACHINE所需的資訊,或者在遠端計算機中可訪問的一組鍵中。
該根鍵中的許多子鍵與System.ini檔案中設定項類似。

6.HKEY_DYN_DATA
該根鍵存放了系統在執行時動態資料,此資料在每次顯示時都是變化的,因此,此根鍵下的資訊沒有放在登錄檔中。

三、登錄檔部分重要內容
登錄檔是一個大型資料庫Registry。要詳細地分析該資料庫,不是一兩頁就能介紹完。我曾經用了半年多時間分析此資料庫結構。下面只介紹部分重要內容。

(一)HKEY_CLASS_ROOT
1.HKEY_CLASS_ROOT/Paint.Pricture/DefaultIcon雙擊視窗右側的預設字串,在開啟的對話方塊中刪除原來的“鍵值”,輸入%1。重新啟動後,在“我的電腦”中開啟Windows目錄,選擇“大圖示”,然後你看到的Bmp檔案的圖示再也不是千篇一律的MSPAINT圖示了,而是每個Bmp檔案的略圖(前提是未安裝ACDSee等看圖軟體)。

(二)HKEY_CURRENT_USER
1.HKEY_CURRENT_USER\Control Panel\Desktop 中新建串值名MenuShowDelay=0 可使“開始”選單中子選單的彈出速度提高。
2.在HKEY_CURRENT_USER\Control Panel\Deskt-op\WindowsMeterics中新建串值名MinAnimate,值為1啟動動畫效果開關視窗,值為0取消動畫效果。

3.再HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run  這個儲存開機自啟的程式,新建鍵值名稱為要啟動的程式名,值為路徑。

(三) HKEY_LOCAL_MACHINE
1.HKEY_LOCAL_MACHINE\software\microsoft\windows\currentVersion\explorer\user shell folders 儲存個人資料夾、收藏夾的路徑。

2.HKEY_LOCAL_MACHINE\system\currentControl-Set\control\keyboard Layouts 儲存鍵盤使用的語言以及各種中文輸入法。

3.HKEY_LOCAL_MACHINE\software\microsoft\windows\currentVersion\uninstall 儲存已安裝的Windows應用程式解除安裝資訊。

4.HKEY_LOCAL_MACHINE\system\CurrentControl-Set\services\class 儲存控制面板-增添硬體裝置-裝置型別目錄。

5.HKEY_LOCAL_MACHINE\system\Current-ControlSet\control\update 設定重新整理方式。值為00設定為自動重新整理,01設定為手工重新整理[在資源管理器中按F5]。

6.HKEY_LOCAL_MACHINE\software\microsoft\win-dows\currentVersion\run 儲存由控制面板設定的計算機啟動時執行程式的名稱,其圖示顯示在任務條右邊。在“啟動”資料夾程式執行時圖示也在任務條右邊。

7.HKEY_LOCAL_MACHINE\software\microsoft\windows\currentVersion\Policies\Ratings 儲存IE4.0中文版“安全”\“分級審查”中設定的口令(資料加密),若遺忘了口令,刪除 Ratings 中的資料即可解決問題。

8.HKEY_LOCAL_MACHINE\software\microsoft\windows\currentVersion\explorer\desktop\nameSpace 儲存桌面中特殊的圖示,如回收站、收件箱、MS Network等。

(四) HKEY_USERS
1.HKEY_USERS\.Default\software\microsoft\internet explorer\typeURLs儲存IE4.0瀏覽器位址列中輸入的URL地址列表資訊。清除文件選單時將被清空。
2.HKEY_USERS\.Default\so..\mi..\wi..\current-Version\ex..\menuOrder\startMenu保留程式選單排序資訊。
3.HKEY_USERS\.Default\so..\microsoft\windows\current-Version\explorer\RunMRU儲存“開始 \ 執行...”中執行的程式列表資訊。清除文件選單時將被清空。
4.HKEY_USERS\.Default\so..\microsoft\windows\current-Version\explorer\RecentDocs 儲存最近使用的十五個文件的快捷方式(刪除掉可解決文件名稱重複的毛病),清除文件選單時將被清空。
5.HKEY_USERS\.default\software\microsoft\windows\currentVersion\applets 儲存Windows應用程式的記錄資料。
6.HKEY_USERS\.default\software\microsoft\windows\currentVersion\run儲存由使用者設定的計算機啟動時執行程式的名稱,其圖示顯示在任務條右側。
登錄檔通過鍵和子鍵來管理各種資訊。但是,登錄檔中的所有資訊是以各種形式的鍵值項資料儲存下來。在登錄檔編輯器右窗格中,儲存的都是鍵值項資料。這些鍵值項資料可分為如下三種類型:
1.字串值
在登錄檔中,字串值一般用來表示檔案的描述、硬體的標識等。通常它由字母和數字組成,最大長度不能超過255個字元。在圖9所示中,“D:\pwin98\trident”即為鍵值名“a”的鍵值,它是一種字串值型別的。同樣地,“ba”也為鍵值名“MRUList”的鍵值。通過鍵值名、鍵值就可以組成一種鍵值項資料,這就相當於Win.ini、Ssyt-em.ini檔案中小節下的設定行。其實,使用登錄檔編輯器將這些鍵值項資料匯出後,其形式與INI檔案中的設定行完全相同。

2.二進位制值
在登錄檔中,二進位制值是沒有長度限制的,可以是任意個位元組長。在登錄檔編輯器中,二進位制以十六進位制的方式顯示出來。鍵值名Wizard的鍵值“80 00 00 00”就是一個二進位制。在“編輯二進位制值”對話方塊時,在編輯框的左邊輸入十六進位制數時,其右邊將會顯示相應的ASCII碼。

3.DWORD值
DWORD值是一個32位(4個位元組,即雙字)長度的數值。在登錄檔編輯器中,您將發現系統會以十六進位制的方式顯示DWORD值。在編輯DWORD數值時,可以選擇用十進位制還是16進位制的方式進行輸入。