1. 程式人生 > >Windows登錄檔背後的祕密

Windows登錄檔背後的祕密

windows登錄檔方面的文章已經有好多,但是其中更多的內容還是很多windows登錄檔的技巧,很多使用者都是“知其然不知其所以然”,而且很多的技巧所涉及的鍵和鍵值根本不為人所知的。這樣並沒有對登錄檔有一個系統的介紹。下面這篇文章分三個部分:登錄檔和它的用途,登錄檔的結構,登錄檔的問題和故障恢復。希望讓計算機新手對登錄檔有一個簡單、全面的概念和了解。關於登錄檔使用技巧和竅門很多文章都有介紹,在此就不贅述。其中翻譯不恰當和錯誤之處,望大家指正。 
   
  登錄檔後面的祕密 
  (一)登錄檔和它的角色 
   
  什麼是登錄檔? 
  登錄檔因為它複雜的結構和沒有任何聯絡的CLSID鍵使得它可能看上去很神祕。不幸的是,微軟並沒有完全公開講述關於登錄檔正確設定的支援資訊,這樣使得登錄檔看上去更不可琢磨。處理和編輯登錄檔如同“黑色藝術”一樣,它在系統中的設定讓使用者感覺象在黑暗中摸索一樣找不到感覺。這樣,因為使用者對這方面的缺乏瞭解使得登錄檔更多的出現故障。 
  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的路徑和檔名即可。 
  最開始,system.ini和win.ini控制著所有windows和應用程式的特徵和存取方法,它在少數的使用者和少數應用程式的環境中工作的很好。隨著應用程式的數量和複雜性越來越大,則需要在.ini檔案中新增更多的引數項。這樣下來,在一個變化的環境中,在應用程式安裝到系統中後,每個人都會更改.ini檔案。然而,沒有一個人在刪除應用程式後刪除.ini檔案中的相關設定,所以system.ini和win.ini這個兩個檔案會變的越來越大。每增加的內容會導致系統性能越來越慢。而且每次應用程式的升級都出現這樣的難題:升級會增加更多的引數項但是從來不去掉舊的設定。而且還有一個明顯的問題,一個.ini檔案的最大尺寸是64KB。為了解決這個問題,軟體商自己開始支援自己的.ini檔案,然後指向特定的ini檔案如win.ini和system.ini檔案。這樣下來多個.ini檔案影響了系統正常的存取級別設定。如果一個應用程式的.ini檔案和WIN.INI檔案設定起衝突,究竟是誰的優先順序更高呢? 
  登錄檔最初被設計為一個應用程式的資料檔案相關參考檔案,最後擴充套件成對於32位作業系統和應用程式包括了所有功能下的東東.登錄檔是一套控制作業系統外表和如何響應外來事件工作的檔案。這些“事件”的範圍從直接存取一個硬體裝置到介面如何響應特定使用者到應用程式如何執行等等。登錄檔因為它的目的和性質變的很複雜,它被設計為專門為32位應用程式工作,檔案的大小被限制在大約40MB。 
   
  登錄檔都做些什麼? 
  登錄檔是為Windows NT和Windows95中所有32位硬體/驅動和32位應用程式設計的資料檔案。16位驅動在Winnt下無法工作,所以所有裝置都通過登錄檔來控制,一般這些是通過BIOS來控制的。在Win95下,16位驅動會繼續以真實模式方式裝置工作,它們使用system.ini來控制。16位應用程式會工作在NT或者Win95 下,它們的程式仍然會參考win.ini和system.ini檔案獲得資訊和控制。 
  在沒有登錄檔的情況下,作業系統不會獲得必須的資訊來執行和控制附屬的裝置和應用程式及正確響應使用者的輸入。 
  在系統中登錄檔是一個記錄32位驅動的設定和位置的資料庫。當作業系統需要存取硬體裝置,它使用驅動程式,甚至裝置是一個BIOS支援的裝置。無BIOS支援裝置安裝時必須需要驅動,這個驅動是獨立於作業系統的,但是作業系統需要知道從哪裡找到它們,檔名、版本號、其他設定和資訊,沒有登錄檔對裝置的記錄,它們就不能被使用。 
  當一個使用者準備執行一個應用程式,登錄檔提供應用程式資訊給作業系統,這樣應用程式可以被找到,正確資料檔案的位置被規定,其他設定也都可以被使用。 
  登錄檔儲存關於預設資料和輔助檔案的位置資訊、選單、按鈕條、視窗狀態和其他可選項。它同樣也儲存了安裝資訊(比如說日期),安裝軟體的使用者,軟體版本號和日期,序列號等。根據安裝軟體的不同,它包括的資訊也不同。 
  然而,一般來說,登錄檔控制所有32位應用程式和驅動,控制的方法是基於使用者和計算機的,而不依賴於應用程式或驅動,每個登錄檔的引數項控制了一個使用者的功能或者計算機功能。使用者功能可能包括了桌面外觀和使用者目錄。所以,計算機功能和安裝的硬體和軟體有關,對所以使用者來說項都是公用的。 
  有些程式功能對使用者有影響,有些時作用於計算機而不是為個人設定的,同樣的,驅動可能是使用者指定的,但在很多時候,它們在計算機中是通用的。 
  登錄檔控制使用者模式的例子有: 
  控制面板功能; 
  桌面外觀和圖示; 
  網路引數; 
  瀏覽器功能性和特徵; 
  那些功能中的某些是和使用者無關的,有些是針對使用者的。 
  計算機相關控制項基於計算機名,和登陸使用者無關。控制型別的例子是安裝一個應用程式,不管是哪個使用者,程式的可用性和存取是不變的,然而,執行程式圖示依賴於網路上登陸的使用者。網路協議可用性和優先權基於計算機,但是當前連線和使用者資訊相關。 
  這裡是在登錄檔中基與計算機控制條目的一些例子: 
  存取控制; 
  登陸確認; 
  檔案和印表機共享; 
  網絡卡設定和協議; 
  系統性能和虛擬記憶體設定; 
  沒有了登錄檔,Win95和Winnt 就不太可能存在。它們實在太複雜了,以致於用過去的.ini檔案無法控制,它們的擴充套件能力需要幾乎無限制的安裝和使用應用程式,登錄檔實現了它。然而,登錄檔比.ini檔案更復雜,理解它如何工作,它做什麼和如何用它來做是有效管理系統的關鍵。 
  在系統中登錄檔控制所有32位應用程式和它們的功能及多個應用程式的互動,比如複製和貼上,它也控制所有的硬體和驅動程式。雖然多數可以通過控制面板來安裝和設定,理解登錄檔仍是做Winnt和Win95系統管理基本常識。
    
  二、登錄檔的結構 
  登錄檔的結構 
  登錄檔是Windows程式設計師建造的一個複雜的資訊資料庫,它是多層次式的。在不同系統上登錄檔的基本結構相同。其中的複雜資料會在不同方式上結合,從而產生出一個絕對唯一的登錄檔。 
  計算機配置和預設使用者設定的登錄檔資料在Winnt中被儲存在下面這五個檔案中: 
  DEFAULT,SAM,SECURITY,SOFTWARE,SYSTEM,NTUSER.DAT。 
  Win95中所有系統註冊資訊儲存在windows目錄下的SYSTEM.DAT檔案裡。所有硬體設定和軟體資訊也儲存在這個檔案。它要比NT登錄檔檔案簡單的多,因為這裡並不需要更多的控制。Win95被設計為一個網路的客戶或者單獨工作的系統,所以使用者控制或者安全級別和NT不一樣。這使得Win95登錄檔工作比NT更容易,所以這個檔案也比較小。 
  Win95使用者的註冊資料一般被儲存在windows目錄下的user.dat裡。如果你在控制面板|密碼|使用者配置檔案中建立並使用多於一個使用者的配置檔案,每個使用者就會有在\WINDOWS\Profiles\username\USER.DAT下它自己的user.dat檔案。在啟動時,系統將記錄你的登陸,從你目錄中的配置檔案(USER.DAT資訊)將被裝入,以用來保持你自己的桌面和圖示。 
   
  控制鍵 
  在登錄檔編輯器中登錄檔項是用控制鍵來顯示或者編輯的。控制鍵使得找到和編輯資訊項組更容易。因此,登錄檔使用這些條目。下面是六個控制鍵 
  HKEY_LOCAL_MACHINE 
  HKEY_CLASSES_ROOT 
  HKEY_CURRENT_CONFIG 
  HKEY_DYN_DATA 
  HKEY_USERS 
  HKEY_CURRENT_USER 
   
  Winnt和Win95的登錄檔並不相容。從Win95向Winnt升級需要你重新安裝32位應用程式,重新在桌面上建立圖示,並重新建立使用者環境。 
  通過控制鍵可以比較容易編輯登錄檔。雖然它們顯示和編輯好象獨立的鍵,其實HKEY_CLASSES_ROOT 和HKEY_CURRENT_CONFIG是 HKEY_LOCAL_MACHINE的一部分。HKEY_CURRENT_USER是HKEY_USERS的一部分。 
  HKEY_LOCAL_MACHINE包含了HKEY_CLASSES_ROOT和HKEY_CURRENT_CONFIG的所有內容。每次計算機啟動時,HKEY_CURRENT_CONFIG和HKEY_CLASSES_ROOT的資訊被對映用以檢視和編輯。 
  HKEY_CLASSES_ROOT其實就是HKEY_LOCAL_MACHINE\SOFTWARE\Classes,但是在HKEY_CLASSES_ROOT窗編輯相對來說顯得更容易和有條理。 
  HKEY_USERS儲存著預設使用者資訊和當前登陸使用者資訊。當一個域成員計算機啟動並且一個使用者登陸,域控制器自動將資訊傳送到HKEY_CURRENT_USER裡,而且HKEY_CURRENT_USER資訊被對映到系統記憶體中。其他使用者的資訊並不傳送到系統,而是記錄在域控制器裡。 
   
  鍵和子鍵 
  資料被分割成多層次的鍵和子鍵,建立分層次(就象Exploer一樣)結構更易於編輯。每個鍵有成組的資訊而且根據在其中的資料型別被命名。每個鍵在它的資料夾圖示上都有一個加號(+)標誌子鍵說明在它下面還有更多內容的東西。當點開它的時候,資料夾的加號標誌被替換成一個減號(-)標誌,然後顯示出下一級的子鍵。 
  所有軟體,硬體,windows工作的設定都存放在HKEY_LOCAL_MACHINE。所有安全策略,使用者許可權和共享資訊也包括在這個鍵中。使用者許可權,安全策略,共享資訊可以通過Windows NT域使用者管理器,Explorer和Win95中控制面板來設定。 
  HKEY_CLASSES_ROOT 
  HKEY_CLASSES_ROOT包含了所有應用程式執行時必需的資訊: 
  在檔案和應用程式之間所有的副檔名和關聯; 
  所有的驅動程式名稱; 
  類的ID數字(所要存取項的名字用數字來代替); 
  DDE和OLE的資訊; 
  用於應用程式和檔案的圖示; 
  HKEY_CURRENT_CONFIG. 
  HKEY_CURRENT_CONFIG是在HKEY_LOCAL_MACHINE中當前硬體配置資訊的對映。如果系統只有一個配置檔案,也就是原始配置,資料將一直在同樣的地方。在控制面板|系統|硬體配置檔案|建立一個額外的配置使額外配置資訊放入HKEY_LOCAL_MACHINE。當Win95中存在多個配置檔案時,當每次計算機啟動時將給出一個提示讓你選擇一個配置檔案。在Winnt中,在啟動時你可以按空格鍵來選擇上次正常啟動時硬體配置檔案。根據硬體配置檔案選擇的不同,特定的資訊被對映到HKEY_CURRENT_CONFIG。 
  HKEY_DYN_DATA 
  HKEY_DYN_DATA和其他的登錄檔控制鍵不同,因為實際上它並不被寫入硬碟驅動器中。Win95的一個優點是,在系統啟動時HKEY_DYN_DATA這個控制鍵儲存收集到的即插即用資訊並配置它們。它儲存在記憶體中,Win95用它來控制硬體。因為是在記憶體中,所以它不從硬碟中讀取,每次當你啟動計算機時,配置都有可能會不一樣。在啟動時Win95必須計算超過1600種可能的配置。所以,如果系統改變既定的設定而沒有報告給Win95那麼潛在的問題就可能發生。系統大多數時間工作良好,但是並非一直如此。 
  HKEY_USERS 
  HKEY_USERS僅包含了預設使用者設定和登陸使用者的資訊。雖然它包含了所有獨立使用者的設定,但在使用者未登陸網路時使用者的設定是不可用的。這些設定告訴系統哪些圖示會被使用,什麼組可用,哪個開始選單可用,哪些顏色和字型可用,和控制面板上什麼選項和設定可用。 
  HKEY_CURRENT_USER 
  用來儲存當前使用者和預設使用者的資訊,HKEY_CURRENT_USER僅對映當前登陸使用者的資訊。 
   
  各主鍵的簡單介紹 
  HKEY_LOCAL_MACHINE 
  HKEY_LOCAL_MACHINE是一個顯示控制系統和軟體的處理鍵。HKLM鍵儲存著計算機的系統資訊。它包括網路和硬體上所有的軟體設定。(比如檔案的位置,註冊和未註冊的狀態,版本號等等)這些設定和使用者無關,因為這些設定是針對使用這個系統的所有使用者的。 
  HKEY_LOCAL_MACHINE\AppEvents 
  為了以後在瘦客戶機上執行客戶機/伺服器這樣的應用程式,在Win95/98中AppEvents鍵是空的。應用程式實際上都駐留網路伺服器上,這些鍵會儲存部分指標。 
  HKEY_LOCAL_MACHINE\Config 
  這個鍵儲存著你計算機上所有不同的硬體設定(這些從控制面板的系統屬性中硬體配置檔案中可以建立)。這些配置在啟動時通常被複制到HKCC。每個配置會被用一個鍵(比如0001或者0002等等)來儲存,每個都是一個獨立的配置。如果你只有一個單一的配置,那就只會有0001這個鍵 
  HKEY_LOCAL_MACHINE\Config\0001\Display 
  這個鍵表示顯示的設定,如熒屏字型,窗體大小,窗體位置和解析度等 
  一個小技巧:當設定了計算機不支援的大解析度導致Windows不能啟動時(黑屏),可以修改解析度來解決。進入安全模式,執行regedit.exe,在這個鍵的Resolution鍵值中把資料值修改為640,480或者800,600這樣的低解析度,然後重新啟動計算機即可。 
  HKEY_LOCAL_MACHINE\Config\0001\System 
  這個鍵儲存著系統裡印表機的資訊 
  HKEY_LOCAL_MACHINE\Config\0001\System\CurrentControlSet\Control\Print\Printers 
  在這個鍵下面,有一個鍵是為系統上每一個印表機設定的,通過控制面板新增和刪除印表機會調整這個列表 
  HKEY_LOCAL_MACHINE\Enum 
  Enum鍵包含啟動時發現的硬體裝置和那些既插即用卡的資訊。Win95使用匯流排列舉在啟動時通過不同的.ini檔案來檢測硬體資訊。那些在啟動時被安裝的和被檢測到的硬體會顯示在這裡。子鍵包括BIOS, ESDI, FLOP, HTREE, ISAPNP, Monitor, Network, Root, SCSI, 和 VIRTUAL。子鍵名錶示它們各自的硬體裝置資訊。 
  HKEY_LOCAL_MACHINE\Enum\BIOS 
  BIOS鍵儲存著系統中所有即插即用裝置的資訊。它們用一套程式碼數列出,包括每一個鍵的詳細說明,舉例,*pnp0400是並行口LPT1的鍵。如果LPT1並不具備即插即用功能,它就會別列入到Enum下的Root鍵中 
  HKEY_LOCAL_MACHINE\Enum\Root 
  Root鍵包括所有非即插即用裝置的資訊。在這裡,我們可以迅速斷定哪些裝置是即插即用,那些不是。比如SCSI介面卡,這個裝置必須符合Win95中一個鍵名為ForcedConfig的硬體設定,這個不會改變。 
  HKEY_LOCAL_MACHINE\Enum\Network 
  win95的網路功能在這個鍵有詳細說明,子鍵包括了每個已經安裝的主要的服務和協議。 
  HKEY_LOCAL_MACHINE\HARDWARE 
  hardware子鍵包括了兩個多層的子鍵:DESCRIPTION鍵,它包含了中央處理器和一個浮點處理器的資訊。還有一個裝置對映鍵,它下面的序列鍵列出你所有的com埠。這個hardware鍵僅儲存超級終端程式的資訊,及數學處理器和序列口。 
  HKEY_LOCAL_MACHINE\Network 
  這個鍵僅儲存網路登陸資訊。所有網路服務細節都儲存在HKEY_LOCAL_MACHINE\Enum\Network這個鍵中。這個鍵有一個子鍵,logon,包括了lmlogon(本地機器登陸?0=false 1=true)的值,logonvalidated(必須登陸驗證),策略處理,主登陸方式(Windows登陸 ,微軟網路客戶方式等),使用者名稱和使用者配置。 
  HKEY_LOCAL_MACHINE\SECURITY 
  security 有兩個子鍵,第一個是存取(它最終致使一個遠端鍵列出網路安全資源,存取許可權等)和提供(包括列出網路地址和地址伺服器),這個鍵被保留用在以後使用高階安全功能和NT相容性上 
  HKEY_LOCAL_MACHINE\SOFTWARE 
  這個鍵列出了所有已安裝的32位軟體和程式的.ini檔案。它包括了變化,依靠軟體安裝。那些程式的控制功能在這裡的子鍵中列出。多數子鍵簡單的列出了安裝軟體的版本號。 
  我們在\Microsoft\Windows\Current Version下發現了一些有意思的設定,它有如下子鍵: 
  1.App paths: 你曾經安裝過的所有32位軟體的位置。 
  2.Applets, Compression, Controls Folder : 包括下控制面板象顯示屬性那樣屬性條的附件。 
  3.Detect, explorer :很多有意思的子鍵如Namespace keys of Desktop和My Computer----它們指出了回收站和撥號網路的CLSID行----和提示子鍵可以讓你建立自己的提示。 
  4.Extensions : 一個擴充套件聯絡的列表,當前相關聯的副檔名和位元定的執行檔案更適合的目標型別。 
  5.Fonts, fontsize, FS Templates :系統屬性條中所選擇檔案系統模板, 伺服器,桌面計算機或者膝上型電腦資訊。 
  6.MS-DOS Emulation :包括一個應用程式相容子鍵 為大量過時的程式二進位制鍵所設。 
  7.MS-DOS Options :在dos模式下的設定,如himem.sys,cd-roms等。 
  8.Network :網路驅動的配置。 
  9.Nls, Policies :系統管理員認為你不應該去做的事。 
  10.ProfileList :所有可以登陸你計算機的使用者名稱列表。 
  11.在Windows啟動時執行的程式的神祕之處是它們並不在開始選單的啟動資料夾中。它們在HKEY_LOCAL_MACHINE\Microsoft\Windows\CurrentVersion\下的子鍵中被執行。 
  Run : 程式在啟動時執行 
  RunOnce : windows初始化時程式在啟動時只執行一次,這個經常用在當安裝軟體之後需要重新啟動系統的時候,所以這個鍵一般都是空的。 
  RunServices : 它就象Run一樣,但是包含了“服務”,它不象一般的程式它們是比較重要的或者是“系統”程式。但是它們不是VXDs,就象McAfee或者RegServ工作一樣。 
  RunServicesOnce : 它只執行一次,但是是“系統自身”的安裝(大量的windows安裝引數:通常鍵值包括了系統目錄位置,和win95更新,可選項安裝元件,和windows啟動目錄的子鍵。 
  注意:在很多黑客木馬軟體中,常常在這裡新增鍵值(一般是在Run中),這樣使得木馬軟體可以隨著windows啟動而啟動並且很隱祕。在這裡可以檢視不正常的啟動項和去掉無用的執行程式(比如我就很不喜歡超級解霸的自動伺服器,在這裡可以去掉它)。 
  12.SharedDLLs:共享DLL的列表,每一個都給出了在一個不可知系統的一個數字等級。 
  13.Shell Extensions:列出了“被認可的”OLE註冊條,和相應的CLSID連線。 
  14.ShellScrap :這個包含了一個PriorityCacheFormats的子鍵,它包括了一個空的有限值,它更象過去SmartDrive命令列引數的派生。 
  15.Time Zones : 主鍵值是你現在的時區;子鍵定義了所以可能的時區。 
  16.Uninstall:這個儲存了程式在新增/刪除程式對話方塊的顯示;子鍵包含了指向反安裝程式的路徑。和安裝嚮導相似.......)winlogon(包含了合法登陸佈告的文字句) 
  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet 
  這個子鍵包括裝置驅動和其他服務的描述和控制。不同於windows nt,win95只包括限制驅動的控制設定資訊。 
  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control 
  這個子鍵包括了win95控制面板中的資訊。不要編輯這些資訊,因為一些小程式的改變在很多地方,一個丟失的項會使這個系統變的不穩定 
  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 
  這個鍵包括了所有win95的標準服務。所有被新增的服務和裝置,每個標準的服務鍵包括了它的設定和辨認設定。 
  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Arbitrators 
  atbitrators鍵包括了當兩個裝置共同佔用同樣的設定需要解決的資訊。四個子鍵包括了記憶體地址,衝突,DMA,I/O埠衝突和IRQ衝突。 
  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Class 
  class鍵包括了所有win95支援的裝置classes控制,這些和你在新增新硬體出現的硬體組很類似,還包括了這些裝置如何安裝的資訊。 
  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\inetaccs 
  這個鍵包括了關於這個系統變化的ie附件的可用性,它僅在你安裝過ie2。0或者更高版本才出現。 
  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSNP32 
  msnp32描述了客戶機如何在microsoft網路中實現功能,它包括了認證過程和認證者的資訊。 
  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NWNP32 
  nenp32鍵描述了windows客戶如何在netware網路中工作功能,它包括了關於認證過程和證明者的資訊。 
  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RemoteAccess 
  在這個鍵裡包括需要遠端工作在win95系統上的資訊,有認證引數,主機資訊,和為了建立一個撥號連線工作的協議資訊。 
  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SNMP 
  這個鍵包括了所以snmp(簡單網路管理協議)的引數。它包括了允許的管理,配置陷阱,和有效的團體。 
  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VxD 
  vxd鍵包括了win95中所有32位虛擬裝置驅動資訊,win95自動管理它們,所以不必要用登錄檔編輯器編輯它們,所以的靜態vxds用子鍵列出。 
  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebPost 
  webpost鍵包括了所有裝載的internet郵局的設定,如果你連線一個isp,並且它列出載這裡,你應該給自己選則一個伺服器。 
  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Winsock 
  這個鍵列出了當連線到internet上winnsock檔案的資訊,如果列出了不正確的檔案,你將不會連線上internet。 
  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WinTrust 
  wintrust功能是檢查從Internet上下載來的檔案是否有病毒,它可以確保你得到乾淨安全的檔案。 
   
  HKEY_CLASSES_ROOT 
  在登錄檔中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不再夠用也是不用驚奇的。

HKEY_CURRENT_CONFIG 
  win95一般只使用一個硬體配置檔案。如果有多個硬體配置檔案。HKEY_LOCAL_MACHINE\Config中就會新增一個鍵。HKEY_LOCAL_MACHINE\Config包含了HKEY_LOCAL_MACHINE中相同的資料 
  在啟動時,你可以選擇你願意使用的配置檔案。如果有多個安裝,每次系統重新啟動時,你就必須選擇.HKEY_CURRENT_CONFIG是在啟動時控制目前硬體配置的鍵 
  在系統啟動以後,任何地方的變化都會自動影響到它。程式設計師經常使用HKEY_CURRENT_CONFIG方便的來存取配置資訊。 
  HKEY_CURRENT_CONFIG包括了系統中現有的所有配置檔案的細節。你的選擇影響了哪一個硬體配置檔案成為現在的。舉例來說,如果配置0002被選擇了,所有0002的配置資訊會被對映到這些鍵上 
  HKEY_CURRENT_CONFIG允許軟體和裝置驅動程式設計師很方便的更新登錄檔,而不涉及到多個配置檔案資訊。 HKEY_LOCAL_MACHINE中同樣的資料和任何登錄檔的變化都會同時的變化。 
   
  HKEY_DYN_DATA 
  在HKEY_DYN_DATA鍵中所有資訊都是在啟動時被寫入的。它再現了Win95在系統中控制硬體所使用的動態資料。它僅只有三個鍵。它們保留了系統目前狀態監視所需要的很簡單的資訊 
  在HKEY_DYN_DATA中除了暫時檔案,沒有任何資料被寫入硬碟。在系統每次重新啟動時所有的資料被重新寫入。另外,在既插即用的情況下,當裝置改變狀態時一些資料可能會寫入。(比如說系統執行時在一個PCMCIA槽中插入一塊網絡卡) 
  Config Manager 
  配置管理包括了在Win95中每個安裝裝置啟動時的資訊。在啟動時它從HKEY_CURRENT_CONFIG中獲得它的列表並且檢查每個項。如果找到一個沒有在列表中列出的裝置,它向系統報告這些資訊來安裝。如果列表中的一個裝置不在系統中,它就會在這個鍵值中顯示這個情況。 
  Enum 
  系統中已安裝的每個裝置的啟動狀態都在這個鍵中被列出。如果某個裝置沒準備好,它就在這裡顯示出來。如果它準備好了,它也會顯示出來。每個裝置指標也被列出顯示哪個註冊這個裝置用來做它的控制 
  PerfStats 
  系統中所有裝置的效能特徵儲存在這個鍵。它是十分難讀的,但是通過系統監視器就十分容易看懂 
  Security 
  這個鍵顯示了登陸在這臺機器和網路上的登陸使用者從哪個證明者得到有效的證明 
   
  HKEY_USERS 
  HKEY_USERS將預設使用者和目前登陸使用者的資訊輸入到登錄檔編輯器,在win95中,它僅被那些配置檔案啟用的登陸使用者使用,同樣在nt下,它也是這樣。 
  win95從user.dat中取得他們的資訊,winnt從ntuser.dat中取得資訊。.dat檔案包含了所有基於使用者的登錄檔設定並且允許你取配置這些使用者的環境。如果你改變了預設使用者的設定,所有新使用者會繼承同樣的設定。而且,那些已經被建立的使用者變的失效。 
  HKEY_USERS\.DEFAULT 
  這個鍵的設定被用於所有新使用者,使用者們的配置檔案從這個配置檔案中建立。它包括所有的環境,螢幕,聲音,和其他使用者相關的功能。 
  HKEY_USERS\.DEFAULT\AppEvents 
  這個鍵列出了事件響應,描述,和各種系統功能的聲音 
  HKEY_USERS\.DEFAULT\AppEvents\Schemes 
  預設和當前的聲音方案在這個鍵和它的子鍵中列出。在事件的時間中系統播發這些聲音 
  HKEY_USERS\.DEFAULT\Console 
  這個鍵儲存了MS-DOS視窗的選項、佈局、熒屏顏色和字型設定。 
  HKEY_USERS\.DEFAULT\Control Panel 
  所有在控制面板裡配置設定的資訊全儲存在這個鍵和它的子鍵中 
  HKEY_USERS\.DEFAULT\Control Panel\Accessibility 
  這個鍵儲存了所有在控制面板中輔助功能的設定。 
  HKEY_USERS\.DEFAULT\Control Panel\Appearance 
  這個鍵儲存了所有在控制面板裡顯示外觀的設定 
  HKEY_USERS\.DEFAULT\Control Panel\Appearance\Schemes 
  這個鍵列出了預設可用的方案,和每個方案包括的顏色和字型。 
  HKEY_USERS\.DEFAULT\Control Panel\Colors 
  這個鍵儲存了Windows每個預設顏色的設定。每個值(顏色名)像一個RGB(紅、綠、藍)值列出來。比如說,黑色是0 0 0,意思就是紅色值是0,綠色值是0,藍色值也是0。相反的白色就是255 255 255。其他的顏色都是RGB值合成的。 
  HKEY_USERS\.DEFAULT\Control Panel\Sound 
  這個鍵決定了在錯誤時系統是否發出響聲 
  HKEY_USERS\.DEFAULT\Environment 
  這個鍵儲存了環境設定,特定的臨時性檔案的位置 
  HKEY_USERS\.DEFAULT\Keyboard Layout 
  鍵盤佈局設定被設定成標準美國英國標準傳統鍵盤佈局。如果你選擇了其他的佈局,那麼數字列表會不同 
  HKEY_USERS\.DEFAULT\Software 
  軟體的安裝設定被儲存在這個鍵中,預設使用者只有微軟程式的設定 
  HKEY_USERS\.DEFAULT\Software\Microsoft 
  微軟的應用程式的相關設定被放在這個鍵裡。如果其他微軟程式被安裝,它們就更新這個使用者的微軟鍵。在下面的專案顯示了預設的控制 
  HKEY_USERS\.DEFAULT\Software\Microsoft\Windows 
  這個鍵儲存了只和windows有聯絡,和windows nt沒關係的設定,這些設定在win95中是相同的,使用同樣的驅動和功能 
  HKEY_USERS\.DEFAULT\Software\Microsoft\Windows NT 
  基於nt 功能的設定在這個鍵中。windows nt沒有這些設定就不能夠執行,它建立環境和網路上的程序,使用者許可權,印表機,字型等等 
  HKEY_USERS\.DEFAULT\Software\Microsoft\Windows NT\CurrentVersion\Winlogon 
  這個設定控制了windows nt的登陸功能 
  HKEY_USERS\.DEFAULT\UNICODE Program Groups 
  預設unicode程式組只是在使用程式管理器時被使用,explorer並不使用它們 
  S-1-5-21-1658001358-1336221227-1912232085-500 (SID) 
  HKEY_USERS\S-1-5-21-1658001358-1336221227-1912232085-500 
  這個是目前登陸使用者的sid,每一個網路上的使用者都被域使用者管理器分配了一個sid,每一個sid都是唯一的,所以它依賴與登陸使用者,這個資訊改變。它是從使用者配置檔案的ntuser.dat檔案調出的。一般來說,它的子鍵很多,是基與安裝的軟體的,選擇的和最終設定 
  HKEY_USERS\SID\Network 
  這個鍵顯示了所有連線到其他系統的對映。舉例來說,如果你對映驅動器H: 到\\server1\docs,它會作為一個子鍵顯示出來 
  HKEY_USERS\SID\Printers 
  這個鍵顯示了所有安裝的,共享的和連線的印表機 
  HKEY_USERS\SID\Software 
  這個鍵為單獨的使用者擴充套件,基於為使用者或者被使用者安裝的其他軟體。 
  HKEY_USERS儲存了所有目前登陸使用者和預設使用者的設定。登陸使用者的改變就如同不同使用者使用這個系統,sid是使用者資訊的表現。使用程式重新找到任何使用者的ntuser.dat檔案並且把他放如到登錄檔中觀看和編輯。 
   
  HKEY_CURRENT_USER 
  HKEY_CURRENT_USER包含著在HKEY_USERS安全辨別裡列出的同樣資訊。任何在HKEY_CURRENT_USER裡的改動也都會立即HKEY_USERS改動。相反也是這樣。 
  HKEY_CURRENT_USER允許程式設計師和開發者易於存取目前登陸使用者的設定。通過建立這個鍵,微軟很容易在不涉及到使用者的SID下改變,新增和設定。 
  也就是說,所有當前的操作改變只是針對當前使用者而改變,並不影響其他使用者。 
   
  登錄檔後面的祕密(三)登錄檔的損壞和解決方法 
   
   
   
  三、登錄檔的損壞和解決方法 
  登錄檔可能出現的問題。 
  如果登錄檔受到嚴重的損害,存取硬體和軟體可能會受到很大的限制,甚至系統不能啟動。可能因為一個很小的問題,一個應用程式將不能正常的執行,或者執行的不穩定。 
  當登錄檔在執行時是受保護的,所以它不可能被複制,刪除,或者改變內容,除非經過一個“驗證過的”程式(比如安裝程式,登錄檔編輯工具,和域使用者管理器改變安全策略和瀏覽器等)。由於這些保護,登錄檔是十分安全的,但是並不是完全能防止的。問題仍會發生,你需要作好認識它們的準備來應付這些問題。 
  當你登錄檔出現問題時,我們大多數會聽到或者感覺到下面一些症狀來認識問題,登錄檔問題的特徵有: 
  昨天計算機(或者軟體程式)還工作,但是今天它就不工作了; 
  在我安裝軟體/硬體前它還工作,但是現在我無法使用它了; 
  我的系統不象以前那樣工作了; 
  當我試圖關閉計算機時,硬碟響個不停卻沒有什麼反應; 
  我的計算機啟動不了了; 
  天!又是藍屏,宕機了; 
  登錄檔變的不正常一般來說有三種原因: 
  1、應用程式和驅動被新增到系統中 
  1)在登錄檔中找出大半的錯誤與新增和刪除程式有關。多數使用者自己新增或者更新驅動,應用程式等等。而且新增和刪除都是多次的。 
  2)程式本身也有問題。沒有任何應用程式沒有bug或者錯誤。最好的情況,就是錯誤微乎其微,複雜深奧的問題你可能從來沒見過。在設計程式時因為受時間和經費的限制,這些錯誤被放置不管。作為一個程式設計師來講,在程式裡有錯誤可能是次要的,但是它使系統崩潰那就變成一個大問題了。 
  3)驅動程式不相容。個人計算機世界的開放結構體系造成了一定的風險,因為任何型別的部件組合在一起都是可能的。但測試所有的組合並保證所有裝置的相容性卻不太可能。所以當用在Win95下的驅動被用在Winnt時,某些問題就會產生。 
  4)在應用程式安裝過程中在登錄檔中添加了不正確的項。在安裝時,多數應用程式使用叫一個叫SETUP.INF的檔案詳細說明例如需要什麼磁碟,哪個目錄將被建立,從哪裡複製檔案,使應用程式工作正常所需要建立的登錄檔項等等詳細資訊。如果在SETUP.INF中有一個錯誤,這個改變也仍然會出現,就會出現嚴重的問題。 
  5)一個應用程式導致另一個應用程式和它預設的檔案關聯出現錯誤。當一個應用程式被安裝後,預設檔案型別被記錄在登錄檔中。然後使用者可以通過雙擊來啟動應用程式和裝載檔案。很多時候,其他應用程式也會使用同樣的副檔名。舉例說,當一個TIF圖形在基於登錄檔裡的設定被啟用時,最後一次裝載的程式將會變成一個執行體。有時候,徹底不相同和根本不相容的程式會在它們自己的文件檔案中使用相同的副檔名,啟動文件的快捷方式將不會工作。在使用者操作過程中,如果在檔案開啟方式選擇了不正確的程式,就會造成一定的問題。 
  6)在反安裝時出現的錯誤。當你在控制面板裡的新增/刪除程式種刪除程式時,通過應用程式自身的反安裝特徵,或者通過第三方軟體,這可能會對登錄檔造成損壞。除此之外,刪除程式,輔助檔案,資料檔案和反安裝程式可能會試圖移去登錄檔的引數項。因為系統不可能知道一個應用程式在登錄檔中所要存取的相關引數項,這將會不經意的移除掉其他應用程式的引數項。 
  7)字型的錯誤。當登錄檔中字型ID出錯,你將在應用程式中看到一種不同的字型。這就讓人感覺很討厭並可能需要你移去部分或全部字型並取代它們。這經常發生在使用者頻繁安裝和刪除字型的時候。 
  2、硬體設定改變或者硬體失敗 
  1)如果計算機系統自身有問題,登錄檔會有損害。通常的,這些錯誤可以在正確的系統維護和管理下避免。 
  2)病毒問題。病毒很隱祕的改變正常的檔案和登錄檔中的部分內容來影響我們的系統。 
  3)計算機用電如果不正常也會影響計算機系統,用UPS可以避免。 
  4)磁碟問題。很多時候你會因為容量不夠使硬體失敗而換掉你的硬碟。如果整塊硬碟失敗,當然,你將不得不從備份中恢復你的登錄檔。其他的則是磁碟獨立扇區或者簇的故障。雖然這些情況在今天的系統不可能發生,但是磁碟表面介質的故障會使得磁碟部分不可讀,包括那些登錄檔檔案位置。 
  3、使用者改動了登錄檔 
  1)手工改變登錄檔。當人們手工編輯登錄檔,由於資料的複雜性和難懂性使得他們難免容易犯錯誤,而且這個錯誤可能很嚴重導致系統工作發生中斷。 
  2)拷貝其他登錄檔是很多使用者犯的一個嚴重錯誤。因為從其他機器上拷貝來的登錄檔檔案並不意味著也會在這一個機器上工作正常。對單獨的系統來說登錄檔都是特殊的。甚至計算機硬體裝置相同,拷貝來的登錄檔在另一個系統上不見得就會工作。如果使用另一個系統的登錄檔,多數硬體裝置將不會工作,使用者和安全問題可能造成資料和應用程式資訊無法使用。 
   
  保護Windows登錄檔 
  保護登錄檔是很重要的,有很多不同的工具可以實現這一目的。當沒有安全設定時,使用者可能的錯誤會更多。幸運的是,他們可以有幾中方法來保護Windows登錄檔,在登錄檔失敗時他們可以用額外的拷貝來恢復登錄檔。下面就是其中的一些方法: 
  1、使用windows備份軟體 
  注:Win95和Win98備份程式有部分區別,在這裡只講Win98的備份程式。 
  Win98中包括一個備份程式。當安裝Win98時如果你選擇“自定義安裝”,或者你可以在控制面板中的新增/刪除程式裡安裝它。當你安裝了這個備份程式,從 開始選單| 程式| 附件 |系統工具 |備份 可以執行它。啟動時,這個程式提示你是否新建一個新備份,開啟現有的備份作業,或者是還原備份檔案 
  。 
  如果選擇新建備份,則會有一個備份嚮導提示你如何去做備份。 
  如果選擇取消嚮導,那麼可以自己手工設定要備份的內容。在備份內容裡可以備份網路和本地驅動器的檔案。可以在你想備份磁碟或者檔案的選擇框打上對號來做備份工作。然後在備份在何處裡填上你做備份的目的位置既可。如果要連同windows登錄檔一起備份,那麼在 作業|選項|高階 裡,在“備份windows登錄檔”選擇框打對號就可以了。恢復則是備份的逆過程,這裡就不詳述了。 
  2、在安全模式下複製登錄檔檔案 
  當Win95執行時,登錄檔檔案被鎖定,只能用登錄檔編輯器或者系統自己來進行存取,這些檔案不能夠被複制到其他地方。如果你在安全模式下啟動Win95,登錄檔就不會使用同樣的方法載入,這樣SYSTEM.DAT 和 USER.DAT就可以被複制。實際上安全模式下系統檔案是受保護的。 
  在啟動時,當計算機顯示Starting Windows 95...時按F8鍵進入安全模式。改變SYSTEM.DAT 和 USER.DAT的隱藏和只讀屬性這樣就可以看到和複製它們。當拷貝完登錄檔檔案,不要忘記了改回它們只讀和隱藏屬性。 
  3、使用微軟配置備份來備份你的登錄檔檔案 
  CFGBACK.EXE是Win95(Win98中沒有這個軟體)所附帶的備份軟體。它在Win95CD-ROM上的\Other\Misc\CFGBACK這個目錄。在系統上拷貝所有的檔案到任何一個目錄,然後在桌面上建立一個CFGBACK.EXE的快捷方式。 
  要做一個登錄檔的備份,啟動CFGBACK然後在選擇的備份名位置輸入一個名字然後點備份繼續。 
  注意:在使用CFGBACK前確定你已經關掉了所有執行的程式。如果有程式在執行,CFGBACK可能將使得系統崩潰,資料丟失,而且儲存的是一個不完整的備份。 
  4、匯出登錄檔 
  在我看來,如果你沒有磁帶機或者其他東西。在REGEDIT.EXE中匯出選項有一個匯出為文字檔案。通常使用一個壓縮工具,匯出工具選項也可以被用做儲存和保護登錄檔的方法。 
  要匯出在登錄檔中的任意鍵,選中這個鍵然後選擇 註冊|匯出登錄檔檔案。這將會複製這個鍵,並提示你在那裡存放這個鍵及它的名字,然後用一個副檔名為.REG的檔案儲存這些資料。 
  當我們用文字格式匯出登錄檔。我們可以使用象pkzip或者其他壓縮工具壓縮它(可以在正常Dos模式執行的)來節省空間。 
  為了備份我們可以在windows目錄下建立一個用來做備份的資料夾。最少在一個月我們應該進行定期的備份。因為許多計算機使用者訂閱或購買帶有贈送CD的計算機雜誌。這些CD上有大量的時間限制的共享軟體。許多使用者從其中安裝一個或者多個程式。當軟體過期時它們反安裝這些程式,但是這些程式在登錄檔中留下了一些痕跡。頻繁的新增/刪除程式會影響登錄檔,但是有了備份相對來說我們就比較安全了。 
  我們必須重新啟動計算機到DOS模式下來匯入,假定你匯出你的登錄檔為mar99.reg.現在在命令提示下打 
  REGEDIT /C MAR99.REG 
  登錄檔編輯器將mar99.reg中的資料匯入你的登錄檔並儲存。不過只在命令提示下這個全部匯入的工作才比較可靠。 
  技巧:如果你的登錄檔不斷的變的龐大,那麼先匯出它然後象上面那樣再逐個匯入它。在這個匯入匯出過程中登錄檔中不必要的項將被清除出去。如果你使用Win98那麼你可以使用Scanreg.exe程式。在windows目錄命令提示下打 Scanreg /fix來執行命令。 
  警告:當你想看一個匯出的登錄檔內容時(副檔名為.reg的檔案),不要直接雙擊它,副檔名.reg檔案和REGEDIT.EXE是相關聯的,這將會在沒得任何提示時自動把這個檔案匯入到登錄檔中。如果這個檔案裡有不正確的資料,它將會破壞登錄檔。要編輯這個檔案,選中它,然後用滑鼠右鍵點它然後選擇編輯。 
  請記住,預防要比修復好的多。無論你選擇什麼樣的方法備份登錄檔,做吧。登錄檔太容易被改變了,在發生突然事件時你手頭上有幾個登錄檔的備份是解決問題最好的方法。 
   
  從登錄檔故障中恢復 
  這裡有四種不同級別的方法可以從Windows登錄檔故障中恢復 
  Restart 
  Redetect 
  Restore 
  Reinstall 
  讓我們來看每一個方法來斷定來使用它最適合的時間,並且解決何種型別的問題。 
  Restart(重新啟動) 
  Win95登錄檔大部分內容儲存在RAM中。如果哪個資訊受損,它就必須重新讀取正確的資訊。當你重新啟動系統,登錄檔將資料從硬碟讀到RAM中就可以使用了。 
  拿字型ID問題來說。每種字型在系統中用一個ID號來使用。當一個字型被用在一個文件時,這個字型被這個數字儲存並且用一個名字來標識。當字型ID損壞那麼字型顯示和列印將被其他字型取代。重新啟動系統從硬碟上重新整理資料,將產生修復過的字型ID,這樣字型顯示和列印就變的正常了。 
  這也就是為什麼Windows系統故障經常在重新啟動後就又恢復正常的一個原因。 
  Redetect the Devices(重新檢測硬體) 
  如果一個裝置工作不正常,那麼在登錄檔中控制裝置的設定可能受損了。為了重新設定登錄檔,你應該刪除並且重灌裝置的驅動,或者你應該讓Win95重新檢測它們。很多時候,當一個裝置工作不正常,它們會在裝置管理器上此裝置前使用一個驚歎號標誌顯示出來。很明顯,如果裝置從不來工作,可能就是其他問題了。但是如果裝置以前工作,現在出問題,登錄檔就需要被恢復。 
  要檢測一個裝置,在控制面板上選擇新增新硬體。第一個問題是文你“需要Windows搜尋新硬體嗎?”如果你選擇是,Win95將做一個徹底的搜尋去找“新”裝置。任何設定不正確的或者沒找到驅動的裝置將被檢測到並顯示出來。 
  Restore(恢復) 
  從CFGBACK中恢復登錄檔 
  從CFGBACK中恢復登錄檔有很多好處。如果你建立了幾個備份,你可以選擇正確的一個來恢復。你可以如同做手術般放置排列登錄檔引數項。 
  匯入登錄檔檔案 
  象前面章節講述的那樣,一個代替使用備份的方法就是匯入一個.REG檔案。.REG檔案包括了目的資料位置,所以對這個檔案簡單的雙擊就可以將資料放入登錄檔。它是所有恢復程式中最簡單的,但是也可能造成錯誤。錯誤不會是用REGEDIT.EXE把資料寫入錯誤的位置,它很可能出現在使用者直接雙擊登錄檔檔案的時候。 
  Reinstall(重新安裝) 
  重新安裝 
  最後的方法就是重新安裝驅動、應用程式或者Win95。一般來說,它只花費你一個小時左右時間去做這些事。如果你在現有的檔案上重新安裝,很多配置資訊還被安裝在同樣的地方。同樣在安裝驅動程式時,你應該重新加入配置資料。 
  實際上找出原因並修復它所花費的時間比重新安裝還要多,這就是為什麼重新安裝在技術支援上是一個相當普通的“解決方法”。關鍵的問題在於,“你是否想找出是什麼錯誤,或者你是否只想讓它工作正常?”答案取決於問這個問題的使用者情況,發生問題的頻繁次數和重新安裝的軟體的實用性。 
  當Windows第一次被安裝時它將在啟動目錄的根目錄上建立一個名為SYSTEM.1ST的檔案。這是Windows第一次啟動時建立的個簡單的system.dat檔案。你所應該做的就是將這個檔案放到windows目錄(在dos模式下)並將它的名字改為SYSTEM.DAT。然後重新啟動。然後你就可以得到安裝時第一次啟動的windows。 
  因為很多.INI,.DLL和其他檔案的改變,這種方法的成功機率大概只超過50%。比如當裝IE4.0後系統和登錄檔將有一個徹底的改變。我們的system.1st檔案雖然包含了一個Dll檔案的參考,但它可能更新或者改變版本號。 
  這裡就是幾個在登錄檔出故障的時候恢復它的工具和方法。你的資料可能會安全恢復,但是不管你用什麼方法,除了重新格式化硬碟,最好的方法就是做好系統登錄檔的備份工作。