概述/由來
在Windows 3.x作業系統中,註冊表是一個極小檔案,其檔案名稱為Reg.dat,裡面只存放了某些檔案類型的應用程式關聯,大部分的設定放在Win.ini、System.ini等多個初始化INI檔案中。由於這些初始化檔案不便於管理和維護,時常出現一些因INI檔案遭到破壞而導致系統無法的啟動的問題。為了使系統運行得更為穩定、健壯,Windows 95/98設計師們借用了Windows NT中的註冊表的思想,將註冊表引入到Windows 95/98作業系統中,而且將INI檔案中的大部分設定也移植到註冊表中,因此,註冊表在Windows 95/98作業系統的啟動、運行過程中起著重要的作用。註冊表顧名思義是註冊檔案,當你在電腦里進行某一操作的時候,都會寫入註冊表,用以記錄.它還有作用就是控制硬體軟體等,比如你可以在註冊表里調整BISO和 2級快取,修改參數等註冊表
從Windows 95開始,Microsoft在Windows中引入了註冊表(英文為REGISTRY)的概念(實際上原來在Windows NT中已有此概念)。如果該註冊表由於某種原因受到了破壞,會使Windows的啟動過程出現異常,嚴重的可能會導致整個Windows系統的完全癱瘓。因此正確地認識、修改、及時地備份以及有問題時恢復註冊表,對Windows用戶來說就顯得非常重要了。如何打開註冊表
在修復註冊表前請備份,
點“開始”→運行→輸入“regedit”→確定
註冊表的結構劃分及相互關係
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中文版的安裝的信息。圖5為HKEY_CURRENT_CONFIG子關鍵字之間的連線情況。
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檔案中設定項類似。圖7顯示了HKEY_LOCAL_MACHINE根鍵下的各個子鍵之間的情況。
6.HKEY_DYN_DATA
該根鍵存放了系統在運行時動態數據,此數據在每次顯示時都是變化的,因此,此根鍵下的信息沒有放在註冊表中。圖8顯示了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取消動畫效果。
(三) 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.二進制值
在註冊表中,二進制值是沒有長度限制的,可以是任意個位元組長。在註冊表編輯器中,二進制以十六進制的方式顯示出來,如圖10所示。 在圖10中,鍵值名Wizard的鍵值“80 00 00 00”就是一個二進制。在如圖11所示的“編輯二進制值”對話框時,在編輯框的左邊輸入十六進制數時,其右邊將會顯示相應的ASCII碼。
3.DWORD值
DWORD值是一個32位(4個位元組,即雙字)長度的數值。在註冊表編輯器中,您將發現系統會以十六進制的方式顯示DWORD值,如圖12所示。在編輯DWORD數值時,可以選擇用十進制還是16進制的方式進行輸入