Windows Registry 系統登錄檔詳解
軟、硬體的有關配置和狀態訊息,應用程式和檔案總管外殼的初始條件、首選項和卸載數據;電腦的整個系統的設置和各種許可,檔案擴展名與應用程式的關聯, 硬體的描述、狀態和屬性;電腦性能紀錄和底層的系統狀態訊息,以及各類其他數據。
登錄檔的架構
在Windows中,登錄檔由兩個檔案組成︰System.dat和User.dat,保存在windows所在的資料夾中。它們是由二進製數據組成。 System.dat包含系統硬體和軟體的設置,User.dat保存著與用戶有關的訊息,例如工作管理員的設置,顏色方案以及網路密碼等等。
Windows為我們提供了一個登錄檔編輯器(Regedit.exe)的工具,它可以用來查看和維護登錄檔。
登錄檔編輯器與工作管理員的界面相似。左邊窗格中,由'我的電腦'開始,以下是六個分支,每個分之名都以HKEY開頭,稱為主鍵(KEY),展開后可以看 到主鍵還包含次級主鍵 (SubKEY)。當單擊某一主鍵或次主鍵時,右邊窗格中顯示的是所選主鍵內包含的一個或多個鍵值(Value)。鍵值由鍵值名稱(Value Name)和數據(Value Data)組成。主鍵中可以包含多級的次級主鍵,登錄檔中的訊息就是按照多級的層次架構組織的。每個分支中保存電腦軟體或應建設之中某一方面的訊息與數 據。
登錄檔中格分支的功能如下︰
HKEY-CLASSES-ROOT 檔案擴展名與應用的關聯及OLE訊息
HKEY-CURRENT-USER 當前登錄用戶控制面板選項和桌面等的設置,以及映射的網路驅動器
HKEY-LOCAL-MACHINE 電腦硬體與應用程式訊息
HKEY-USERS 所有登錄用戶的訊息
HKEY-CURRENT-CONFIG 電腦硬體配置訊息
HKEY-DYN-DATA 即插即用和系統性能的動態訊息
登錄檔中的鍵值項數據
登錄檔透過鍵和子鍵來管理各種訊息。但是登錄檔中的所有訊息都是以各種形式的鍵值項數據保存的。在登錄檔編輯器右窗格中顯示的都是鍵值項數據。這些鍵值項數據可以分為三種類型︰
1.字元串值
在登錄檔中,字元串值一般用來表示檔案的描述和硬體的標識。通常由字母和數字組成,也可以是漢字,最大長度不能超過255個字符。在本站中以'a'='***'表示。
2.二進製值
在登錄檔中二進製值是沒有長度限制的,可以是任意位元組長。在登錄檔編輯器中,二進製以十六進製的模式表示。在本站中以'a'=hex:01,00,00,00模式表示。
3.DWORD值
DWORD值是一個32位(4個位元組)的數值。在登錄檔編輯器中也是以十六進製的模式表示。在本站中以'a'=dword:00000001表示。
如果登錄檔遭到破壞,Windows將不能正常運行,為了確保Windows系統安全, 我們必須經常的備份登錄檔。Windows每次正常啟動時,都會對登錄檔進行備份,System.dat備份為System.da0, User.dat備份為User.da0。它們存放在Windows所在的資料夾中,屬性為系統和隱藏。
以下為2種備份登錄檔的方法︰
1,利用Windows中的登錄檔編輯器(Regedit.exe)進行備份
營運Regedit.exe,單擊“檔案“-->“導出登錄檔檔案“命令,選擇保存的路徑,保存的檔案為*.reg, 可以用任何文本編輯器進行編輯。
2,利用Win95光盤上Other\Misc\ERU\ERU.EXE緊急事故恢復工具(Emergency Recovery Utility)。利用這個工具不但可以備份和恢復登錄檔,還可以備份硬碟中的任何檔案。
恢復︰
當登錄檔損壞時,啟動時Windows會自動用System.dat和User.dat的備份System.da0和User.da0進行恢復工作,如果 不能自動恢復,可以營運Regedit.exe(它可以營運在在Windows下或DOS下),導入.reg備份檔案。也可以營運ERU.EXE進行恢 復。
如果您沒有進行備份或者登錄檔損壞的非常嚴重,那么您可以試試最後一著︰在c:\下有一個System.1st檔案,屬性為隱藏和只讀,它記錄著安裝 Windows時的電腦硬體軟體訊息,用這個檔案覆蓋System.dat。但是這樣的話您安裝的應用軟體可能會無法營運,必須重新安裝。
登錄檔修改方法
透過修改登錄檔我們可以實現一些特殊的功能,但是登錄檔又是十分脆弱的,一個不小心就會出現錯誤。那我們怎么樣來修改登錄檔呢?我總結為以下幾種方法︰
1.軟體修改(安全)
透過一些專門的修改工具來修改登錄檔,比如︰MagicSet、TweakUI、WinHacker等等。其實控制面板就是一個這樣的工具,只不過功能簡單一些。
2.間接修改(比較安全)
將要修改的寫入一個.reg檔案中,然後導入登錄檔中。.reg檔案的基本格式為︰
REGEDIT4
[HKEY_LOCAL_MACHINE\Software\Super Rabbit\MagicSet]
'@'='Super Rabbit Magic Set For Windows 98 V2.92'
'a'=dword:00000001
'b'=hex:02,05,00,00
……
[HKEY_LOCAL_MACHINE\Software\SCC\QuickViewer]
……
第一行為“REGEDIT4”,必須大寫。
第二行為空行。
第三行使用[]括起子鍵分支,其中HKEY_LOCAL_MACHINE\Software\Super Rabbit\MagicSet就是一個子鍵分支。
第四、五、六行是該子鍵下的設置數據。其中@表示登錄檔編輯器右窗格中的'默認'鍵。
以下類似。
這樣做的好處是可以避免錯誤的寫入或刪除等操作,但是要求用戶了解登錄檔的內部架構和.reg檔案的格式。
3.直接修改(最不安全,但最直接有效)
就是透過登錄檔編輯器直接的來修改登錄檔的鍵值數據項,這樣做會避免在登錄檔中留下垃圾(雖然都很小,但越來越多會拖慢系統速度),但是要求用戶有一定的登錄檔知識,熟悉登錄檔內部架構而且一定要小心謹慎。