現在隨著電腦應用知識的普及,我想,很多朋友對WINDOWS注冊表的修改已經有不少經驗和心得。在圖形界面下對注冊表的維護和修改,就不必再提了,但有時候,我們可能會遇到更辣手的事情,如由於人為錯誤操作或者惡性病毒感染而使系統切底崩潰,不能進入WINDOWS圖形界面時,我們對此是否只有重裝這種方法呢本文將就在DOS下面盡量挽救系統這方面作出闡述。
一、 使用scanreg/restore
我想這種方法大家也比較熟悉了,只要在DOS界面下輸入該命令,就可以在最近的5個注冊表備份裡(電腦自動關機)恢復,如果幸運的話,系統就可以馬上恢復。但,事實上,用這種方法有個致命的缺陷就是你只有最近5天的注冊表備份可以選擇。因為控制著自動備份的scanreg.exe只會在每天第一次啟動電腦時備份,如果哪天你安裝的程序或者對注冊表的修改比較多,那麼你的努力就大多白費了。這種方法就正如是眉毛胡子一起抓,正確和錯誤的都一起改掉,是否能為恢復系統幫上忙,總有一種聽天由命的感覺。所以,筆者鼓勵大家使用第二種方法。
二、使用DOS界面的regedit.exe
如果把scanreg/restore比作是一刀切的話,這種方法更像是一次高明的外科手術,只一矢中的地針對病,把錯誤修復而完全不影響注冊表的其他健康部分。這樣,我們就能在最大限度上保留我們的工作成果了。使用regedit.exe對注冊表實行局部修改的思路是:首先,把注冊表裡(電腦自動關機)有嫌疑的分支導出;然後,使用edit對它進行分析和修改;最後,把健康的分支重新導入注冊表裡(電腦自動關機)。好了,我們來看看整個過程的具體操作。
1 導出注冊表分支
在DOS下導出注冊表分支的命令格式是:Regedit[/L:system] [/R:user] /E filename [regpath1]。/L:system是指定system.dat的路徑,/R:user是指定user.dat的路徑,如果不說明,系統就會在默認的路徑下找;/E:是導出注冊表分支的文件名,regpath1是要導出的注冊表分支。比如,我們要導出默認注冊表關於控制系統啟動的分支到test.reg裡(電腦自動關機),命令如下:regedit /e test.reg HKEY-LOCAL-MACHINE\Software\Microsoft\Windows\CurrentVersion\Run。
2 對注冊表進行分析、修改
在DOS下面只要運行edit就能對*.reg文件進行編輯了,因為我們導出的注冊表實際上就是文本文件。不過,要正確找出引起錯誤的地方並修改,需要我們平http://www.xsyzj.cn時對注冊表積累的經驗。下面,我們看一下它的基本結構,以使我們在對它的修改時可以有的放矢。
我們知道,注冊表裡(電腦自動關機)面有6個主分支,其中容易引起致命錯誤而使WINDOWS不能正常啟動的分支有:
[HKEY_LOCAL_MACHINE],記錄著本地機器的硬件配置以及安裝的相應軟件,特別是[HKEY-LOCAL-MACHINE\Enum\PCI]這個分支下面的主鍵值,一旦出錯,WINDOWS往往不能啟動。如[HKEY-LOCAL-MACHINE\Enum\PCI\VEN_8086&DEV-7111&SUBSYS_00000000&REV-01\BUS_00&DEV_07&FUNC-01]記錄的是硬盤控制器的詳細信息,下面的Logconfig記錄著它的各種參數;[HKEY_LOCAL-MACHINE\Enum\PCI\VEN-1002&DEV-4C42&SUBSYS_4C421071&REV-DC\000800]記錄的則是顯示卡的重要資料和參數,一旦這裡(電腦自動關機)出錯,往往會導致WINDOWS在啟動時黑屏,然後死掉。
另外還有[HKEY-LOCAL-M ACHINE\Software\Microsoft\Windows\CurrentVersion]裡(電腦自動關機)記錄著WINDOWS當前版本的信息以及啟動時執行的程序等,這是病毒最愛攻擊和修改的地方。
至於還有[HKEY-CLASS-ROOT]是記錄文件種類及其關聯信息的,[HKEY-CURRENT-USER]裡(電腦自動關機)記錄著當前用戶的各種信息,包括登陸的密碼和各方面的設置等,這些一般不會引起WINDOWS的致命錯誤,這裡(電腦自動關機)也不再詳細分析了。
當我們對這些鍵值分析和修改時,如果碰到什麼不清處的地方,可以通過第1點的導出注冊表方法,把一些備份注冊表的相應分支導出,進行比較。WINDOWS的注冊表備份都放在C:\windows\sysbackup裡(電腦自動關機)面,如我們要導出第一個注冊表備份的[HKEY_LOCAL_MACHINE]分支,那麼我們可以先進入該目錄,然後鍵入命令:extract /e rb000.cab *.*,先把system.dat和user.dat解壓出來,再鍵入命令:regedit /L:system.dat /R:user.dat /e backup.reg HKEY-LOCAL-MACHINE。 筆者在這裡(電腦自動關機)提醒一下,這是一個很好的解決問題的方法,再用上一些文件比較軟件可以很快的找出錯誤的,請諸位慢慢體會。
3 把修改好的注冊表分支重新導入
命令的格式為:regedit /L:system /R:user file1.reg file2.reg。我們一般都要修改默認的注冊表文件,所以在實際使用中只需鍵入:regedit file1.reg就行了。
好了,講了這麼久,我們看看一個具體的案例。
學院機房裡(電腦自動關機)的一台機器在重新啟動後,無論用正常模式或者安全模式都不能進入WINDOWS界面,表現為啟動過程中硬盤突然不讀。用SCANDISK檢查過硬盤,並沒有發現問題。在啟動過程中選擇生成BOOTLOG.TXT文件,發現啟動到硬盤控制器後就斷掉了。本來想用scanreg/restore恢復備份的注冊表,可是該機器為了加快啟動,並沒有自動備份。於是,用regedit把[HKEY-LOCAL-MACHINE\Enum\PCI]分支導出,鍵入:regedit /e hdc.reg HKEY-LOCAL-MACHINE\Enum\PCI;接著用EDIT查看關於硬盤控制器的部分,發現有"ChannelOptions"=hex:00,問題到這裡(電腦自動關機)終於發現了,原來是有人把IDE控制器設置成不使用,造成在加載硬盤控制器後,系統不能訪問硬盤,所以把它改為:hex:02;再鍵入命令:regedit hdc.reg,把修改後的信息導入。重新啟動機器,一切正常運行了。
這樣,在不損壞任何數據的情況下,就把問題解決了。希望這個例子能給大家帶來這種DOS下維護注冊表技巧的啟發,畢竟,我們硬盤上面有很多都是無價的數據。
DOS下維護注冊表的高級技巧