gigigo Groupie
加入: 2004/5月/31
Online Status: Offline 回復: 42
|
Posted: 2005/3月/09 6:06下午 | IP記錄
|
|
|
登錄檔的基本常識
Windows 登錄檔是幫助 Windows 控制硬體、軟體、用戶環境和 Windows 界面的一套數據文件,登錄檔包含在 Windows 目錄下兩個文件 system.dat 和 user.dat 裡,還有它們的備份 system.da0 和 user.da0。通過 Windows 目錄下的 regedit.exe 程序可以存取登錄檔數據庫。在以前,在 windows 的更早版本(在 Win95 以前),這些功能是靠 win.ini,system.ini 和其他和應用程序有關聯的 *.ini 文件來實現的。
在 Windows 操作系統家族中,system.ini 和 win.ini 這兩個文件包含了操作系統所有的控制功能和應用程式的信息,system.ini 管理電腦硬體而 win.ini 管理桌面和應用程式。所有驅動、字體、設置和參數會保存在 *.ini 文件中,任何新程序都會被記錄在 *.ini 文件中。這些記錄會在程序代碼中被引用。因為受 win.ini 和 system.ini 文件大小的限制,程序員添加輔助的 *.ini 文件以用來控制更多的應用程式。舉例來說,微軟的 Excel 有一個 excel.ini 文件,它包含眾選項、設置、參數和其他關俙到 Excel 運行正常的信息。在 system.ini 和 win.ini 中只需要指出 excel.ini 的路徑和文件名即可。
早在 Dos 和 Win3.x 的時代,大部分的應用程式都是採用了 ini 文件(初始化文件)來保存一些配置信息,如設置路徑,環境變量等。system.ini 和 win.ini 控制了所有 windows 和應用程序的特徵和存取方法,它在少數的用戶和少數應用程式的環境中工作的很好。隨著應用程式的數量和複雜性越來越大,則需要在 *.ini 文件中添加更多的參數項。這樣下來,在一個變化的環境中,在應用程式安裝到系統中後,每個人都會更改 *.ini 文件。然而,沒有一個人在刪除應用程式後刪除 *.ini 文件中的相關設置,所以 system.ini 和 win.ini 這個兩個文件會變的越來越大。每增加的內容會導致系統性能越來越慢。而且每次應用程序的升級都出現這樣的難題:升級會增加更多的 參數項但是從來不去掉舊的設置。而且還有一個明顯的問題,一個 *.ini 文件的最大尺寸是 64 KB。為了解決這個問題,軟體商自己開始支持自己的 *.ini 文件,然後指向特定的 ini 文件如 win.ini 和 system.ini 文件。這樣下來多個 *.ini 文件影響了系統正常的存取級別設置。如果一個應用程序的 *.ini 文件和 WIN.INI 文件設置起衝突,究竟是誰的優先級更高呢?
登錄檔最初被設計為一個應用程序的數據文件相關參考文件,最後擴展成對於 32 位操作系統和應用程序包括了所有功能下的東東。登錄檔是一套控制操作系統外表和如何響應外來事件工作的文件。這些“事件”的範圍 從直接存取一個硬體設備到接口如何響應特定用戶到應用程式如何運行等等。登錄檔因為它的目的和性質變的很複雜,它被設計為專門為 32 位應用程式工作,文件的大小被限制在大約 40 MB。利用一個功能強大的登錄檔數據庫來統一集中地管理系統硬體設施,軟體配置等信息,從而方便了管理,增強了系統的穩定性。最 直觀的一個實例就是,為什麼 Windows 下的不同用戶可以擁有各自的個性化設置,如不同的桌布,不同的桌面。這就是通過登錄檔來實現的。
由此可見,登錄檔(Registry)是 Windows9x/Me/NT/2000 操作系統、硬體設備以及客戶應用程式得以正常運行和保存設置的核心“數據庫”;是一個巨大的樹狀分層的數據庫。它記錄了用戶安裝 在機器上的軟體和每個程式的相互關聯關俙;它包含了電腦的硬體配置,包括自動配置的即插即用的設備和已有的各種設備說明、狀態屬 性以及各種狀態信息和數據等。
登錄檔都做些什麼?
登錄檔是為 Windows NT 和 Windows95 中所有 32 位硬體/驅動和 32 位應用程序設計的數據文件。16 位驅動在 Windows NT 下無法工作,所以所有設備都通過登錄檔來控制,一般這些是通過 BIOS 來控制的。在 Win9x 下,16 位驅動會繼續以實模式方式設備工作,它們使用 system.ini 來控制。16 位應用程序會工作在 NT 或者 Win9x 下,它們的程序仍然會參考 win.ini 和 system.ini 文件獲得信息和控制。
在沒有登錄檔的情況下,操作系統不會獲得必須的信息來運行和控制附屬的設備和應用程式及正確響應用戶的輸入。
在系統中登錄檔是一個記錄 32 位驅動的設置和位置的數據庫。當操作系統需要存取硬體設備,它使用驅動程式,甚至設備是一個 BIOS 支持的設備。無 BIOS 支持的設備安裝時必須需要驅動,這個驅動是獨立於操作系統的,但是操作系統需要知道從哪裡找到它們,文件名、版本號、其他設置和 信息,沒有登錄檔對設備的記錄,它們就不能被使用。
當一個用戶準備運行一個應用程式,登錄檔提供應用程式信息給操作系統,這樣應用程式可以被找到,正確數據文件的位置被規定,其他 設置也都可以被使用。
登錄檔保存關於設置數據和輔助文件的位置信息、選項、按鈕條、窗口狀態和其他可選項。它同樣也保存了安裝信息(比如說日期),安 裝軟體的用戶,軟體版本號和日期,序列號等。根據安裝軟體的不同,它包括的信息也不同。
然而,一般來說,登錄檔控制所有 32 位應用程式和驅動,控制的方法是基於用戶和電腦的,而不依賴於應用程式或驅動,每個登錄檔的參數項控制了一個用戶的功能或者電腦 功能。用戶功能可能包括了桌面外觀和用戶目錄。所以,電腦功能和安裝的硬體和軟體有關,對所以用戶來說項都是公用的。
有些程序功能對用戶有影響,有些時作用於電腦而不是為個人設置的,同樣的,驅動可能是用戶指定的,但在很多時候,它們在電腦中是 通用的。
登錄檔控制用戶模式的例子有:
控制面板功能。
桌面外觀和圖標。
網絡參數。
瀏覽器功能性和特征。
這些功能中的某些是和用戶無關的,有些是針對用戶的。
電腦相關控制項基於電腦名,和登陸用戶無關。控制類型的例子是安裝一個應用程式,不管是哪個用戶,程式的可用性和存取是不變的, 然而,運行程式圖示依賴於網絡上登陸的用戶。通訊協定可用性和優先權基於電腦,但是當前連接和用戶信息相關。
這裡是在登錄檔中基與電腦控制條目的一些例子:
存取控制。
登陸確認。
文件和印表機共享。
網卡設置和協定。
系統性能和虛擬記憶體設置。
沒有了登錄檔,Win9x 和 Windows NT 就不太可能存在。它們實在太複雜了,以致於用過去的 *.ini 文件無法控制,它們的擴展能力需要幾乎無限制的安裝和使用應用程式,登錄檔實現了它。然而,登錄檔比 *.ini 文件更復雜,理解它如何工作,它做什麼和如何用它來做是有效管理系統的關鍵。
在系統中登錄檔控制所有 32 位應用程式和它們的功能及多個應用程式的交互,比如複製和貼上,它也控制所有的硬體和驅動程式。雖然多數可以通過控制面板來安裝 和設置,理解登錄檔仍是做 Windows NT 和 Win9x 系統管理基本常識。
概括起來,登錄檔中存放著各種參數,直接控制著 Windows 的啟動、硬體驅動程式的裝載以及一些 Windows 應用程式的運行,從而在整個系統中起著核心作用。它包括:
軟、硬體的有關配置和狀態信息,登錄檔中保存有應用程式和資源管理器外殼的初始條件、首選項和卸載數據。
聯網電腦的整個系統的設置和各種許可,文件擴展名與應用程式的關聯,硬體部件的描述、狀態和屬性。
性能記錄和其它底層的系統狀態信息,以及其它數據。
如果登錄檔受到了破壞,輕者使 Windows 的應用程式出現異常,重者可能會導致整個系統的完全癱瘓。因此正確地認識、使用,特別是及時備份以及有問題時恢復登錄檔,對 Windows 用戶來說就顯得非常重要。學會了登錄檔的知識以及相關應用,便能使你的電腦操作更加得心應手!從而成為一位名副其實的電腦高手!
與登錄檔有關的術語:
登錄檔:是一個樹狀分層的數據庫。從物理上講,它是System.dat和User.dat兩個文件;從邏輯上講,它是用戶在登 錄檔編輯器中看到的配置數據。
HKEY :“根鍵”或“主鍵”,它的圖標與資源管理器中文件夾的圖標有點兒相像。Windows98將登錄檔分為六個部分,並稱之為 HKEY_name,它意味?某一鍵的句柄。
key(鍵):它包含了附加的文件夾和一個或多個值。
subkey(子鍵):在某一個鍵(父鍵)下面出現的鍵(子鍵)。
branch(分支):代表一個特定的子鍵及其所包含的一切。一個分支可以從每個登錄檔的頂端開始,但通常用以說明一個鍵和其所 有內容。
value entry(值項):帶有一個名稱和一個值的有序值。每個鍵都可包含任何數量的值項。
每個值項均由三部分組成:名稱,數據類型,數據。
名稱:不包括反斜槓的字符、數字、代表符、空格的任意組合。同一鍵中不可有相同的名稱。
數據類型:包括字符串、二進制、雙字三種。
字符串(REG_SZ):顧名思義,一串 ASCII 碼字符。如“Hello World”,是一串文字或詞組。
在登錄檔中,字符串值一般用來表示文件的描述、硬體的標識等。通常它由字母和數字組成。登錄檔總是在引號內顯示字符串。
二進制(REG_BINARY):如 F03D990000BC ,是沒有長度限制的二進制數值,在登錄檔編輯器中,二進制數據以十六進制的方式顯示出來。
雙 字(REG_DWORD):從字面上理解應該是 Double Word ,雙字節值。由 1-8 個十六進制數據組成,我們可用以十六進制或十進制的方式來編輯。如 D1234567 。
數據: 值項的具體值,它可以佔用到 64 KB。
Default(預設值):每一個鍵至少包括一個值項,稱為預設值(Default),它總是一個字串。
登錄檔的內部組織結構及相互關俙:
電腦配置和預設用戶設置的登錄檔數據在 Windows NT 中被保存在下面這五個文件中:DEFAULT,SAM,SECURITY,SOFTWARE,SYSTEM,NTUSER.DA T。
而 Windows9x/Me/2000 將所有登錄檔文件存入 2 個文件中:System.dat 和 User.dat。它們是二進制文件,不能用文本編輯器查看。它們存在於 Windows 目錄下,具有隱含、系統、隻讀屬性。System.dat 包含了電腦特定的配置數據,User.dat包 含了用戶特定的數據。User.dat 文件的位置在以某個用戶名登錄時,其位於 C:\Windows\profiles\ 用戶名目錄下,系統同時在 C:\Windows 目錄下保留了一個預設的 User.dat 文件,以備新用戶使用。內部組織結構是一個類似於目錄管理的樹狀分層的結構。
WINDOWS的登錄檔有六大根鍵,相當於一個硬碟被分成了六個分區。
在“運行”對話框中輸入 RegEdit,然後單擊“確定”按鈕,則可以運行登錄檔編輯器。
左窗格顯示的是登錄檔的根鍵,這樣的根鍵共六個。這些根鍵都是大寫的,並以 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_C ONFIG\SY-STEM\Current Control 就是 HKEY_LOCAL_MACHINE\SYSTEM\Current Control。
HKEY_USERS 中保存了默認用戶和當前登錄用戶的用戶信息。HKEY_CURRENT_USER 中保存了當前登錄用戶的用戶信息。
HKEY_DYN_DATA 保存了系統運行時的動態數據,它反映出系統的當前狀態,在每次運行時都是不一樣的,即便是在同一台機器上。
根據上面的分析,登錄檔中的信息可以分為 HKEY_LOCAL_MACHINE和HKEY_USERS 兩大類,這兩大類的詳細內容請看後面的介紹。
六大根鍵的作用
登錄檔採用“關鍵字”及其“鍵值”來描述登錄項及其數據。所有的關鍵字都是以“HKEY”作為前綴開頭。打個比喻來說,關鍵字更 像 Windows9X 下的瀏覽器裡的目錄下的文件,每個文件都會有自己特有的內容和屬性。我們可以在登錄檔編輯器下很方便地添加、修改、查詢和刪除登 錄檔的每一個關鍵字。關鍵字可以分為兩類:一類是由系統定義,一般叫做“預定義關鍵字”;另一類是由應用程式定義的,根據應用軟 體的不同,登錄項也就不同。
在登錄檔中,所有的數據都是通過一種樹狀結構以鍵和子鍵的方式組織起來,十分類似於目錄結構。每個鍵都包含了一組特定的信息,每 個鍵的鍵名都是 和它所包含的信息相關的。如果這個鍵包含子鍵,則在登錄檔編輯器窗口中代表這個鍵的文件夾的左邊將有“+”符號,以表示在這個文 件夾中有更多的內容。如果這個文件夾被用戶打開了,那麼這個“+”就會變成“-”。
下面我們對系統預定義的六大根鍵簡單地介紹一下。
HKEY_USERS
該根鍵保存了存放在本地電腦帳號列表中的用戶標識和密碼列表,即用戶設置。每個用戶的預配置信息都存儲在 HKEY_USERS根鍵中。HKEY_USERS 是遠程電腦中訪問的根鍵之一。其內容取決於電腦是否啟動了用戶配置文件,若未啟動用戶配置文件,則可以看到稱為 *.DEFAULT 的單一子鍵,該子鍵包括和所有用戶相關的各種設置,並且和 \Windows下 的 USER.DAT 文件相配合。若啟動了用戶配置文件並且正確地執行了登錄,則還有一個“用戶名”的子鍵,該用戶名為用戶登錄的名稱。
HKEY_CURRENT_USER
該根鍵包含本地工作站中存放的當前登錄的用戶信息,包括用戶登錄用戶名和暫存的密碼(注:此密碼在輸入時是隱藏的)。用戶登錄 Windows 98 時,其信息從 HKEY_USERS 中相應的項拷貝到 HKEY_CURRENT_USER中。HKEY_CURRENT_USER 下面有 7 個子關鍵字。其中除 RemoteAccess 外,其餘 6 個都為系統預定義。
AppEvents 這個子鍵裡登記已注冊的各種應用事件。
ControlPanel 它裡面涉及到控制面板設置有關的內容。
InstallLocationsMRU windows安裝路徑的有關信息。
Keyboardlayout 關於鍵盤設置的信息。
Network 有關網路設置的信息。
RemoteAccess 安裝 IE 時建立的子關鍵字,包含該應用程式的有關信息。
Software 軟體的有關信息。
HKEY_CURRENT_CONFIG
該根鍵存放著定義當前用戶桌面配置(如顯示器等)的數據,最後使用的文檔列表(MRU)和其他有關當前用戶的 Windows 98 中文版的安裝的信息。
HKEY_CLASSES_ROOT
該鍵由多個子鍵組成,具體可分為兩種:一種是已經注冊的各類文件的擴展名,另一種是各種文件類型的有關信息。左欄中的子鍵就是各 種已經注冊的文件擴展名。 登錄檔內己經登記的文件擴展名中,有系統默認和應用程序自定義的擴展名。
應用程式只有把自定義的擴展名在登錄檔中登記,系統才能識別和關聯使用有關的文檔,但只有經過注冊的擴展名,系統才能自動關聯。 根據在 Windows 98 中文版中安裝的應用程式的擴展名,該根鍵指明其文件類型的名稱。
在第一次安裝 Windows 98 中文版時,RTF (Rich Text Format)文件與寫字板(WordPad)聯系起來,但在以後安裝了中文 Word 6.0 後,雙擊一個 RTF 文件時,將自動啟動 Word。存放在 SYSTEM.DAT 中的 HKEY_CLASSES_ROOT,將替代 WIN.INI 文件中的[Extensions]小節中的設置項,它把應用程序與文件擴展名聯系起來,它也替代了 Windows 3.x 中的 Reg.dat 文件中的相似的設置項。
HKEY_LOCAL_MACHINE
登錄檔的核心,電腦的各種硬體和軟體的配置均存在於此。它包括以下八個部分:Config配置、Driver驅動程式、Enum 即插即用、Hardware硬體、Network網路、Security安全、Software軟體、System系統。
每部分中又包括許多子鍵。該根鍵存放本地電腦硬體數據,此根鍵下的子關鍵字包括在 SYSTEM.DAT 中,用來提供 HKEY_LOCAL_MACHINE 所需的信息,或者在遠程電腦中可訪問的一組鍵中。該根鍵中的許多子鍵與 System.ini 文件中設置項類似。
HKEY_DYN_DATA
該根鍵存放了系統在運行時動態數據,此數據在每次顯示時都是變化的,因此,此根鍵下的信息沒有放在登錄檔中。
|