現(xiàn)在隨著電腦應用知識的普及,我想,很多朋友對WINDOWS注冊表的修改已經有不少經驗和心得。在圖形界面下對注冊表的維護和修改,就不必再提了,但有時候,我們可能會遇到更辣手的事情,如由于人為錯誤操作或者惡性病毒感染而使系統(tǒng)切底崩潰,不能進入WINDOWS圖形界面時,我們對此是否只有重裝這種方法呢?本文將就在DOS下面盡量挽救系統(tǒng)這方面作出闡述。 DOS下維護注冊表的技巧一、使用scanreg/restore 我想這種方法大家也比較熟悉了,只要在DOS界面下輸入該命令,就可以在最近的5個注冊表備份里恢復,如果幸運的話,系統(tǒng)就可以馬上恢復。但,事實上,用這種方法有個致命的缺陷就是你只有最近5天的注冊表備份可以選擇。因為控制著自動備份的scanreg.exe只會在每天第一次啟動電腦時備份,如果哪天你安裝的程序或者對注冊表的修改比較多,那么你的努力就大多白費了。這種方法就正如是眉毛胡子一起抓,正確和錯誤的都一起改掉,是否能為恢復系統(tǒng)幫上忙,總有一種聽天由命的感覺。所以,筆者鼓勵大家使用第二種方法。 DOS下維護注冊表的技巧二、使用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的路徑,如果不說明,系統(tǒng)就會在默認的路徑下找;/E:是導出注冊表分支的文件名,regpath1是要導出的注冊表分支。比如,我們要導出默認注冊表關于控制系統(tǒng)啟動的分支到test.reg里,命令如下:regedit /e test.reg HKEY-LOCAL-MACHINE\Software\Microsoft\Windows\CurrentVersion\Run。 2 對注冊表進行分析、修改 在DOS下面只要運行edit就能對*.reg文件進行編輯了,因為我們導出的注冊表實際上就是文本文件。不過,要正確找出引起錯誤的地方并修改,需要我們平時對注冊表積累的經驗。下面,我們看一下它的基本結構,以使我們在對它的修改時可以有的放矢。 我們知道,注冊表里面有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記錄著它的各種參數(shù);[HKEY_LOCAL-MACHINE\Enum\PCI\VEN-1002&DEV-4C42&SUBSYS_4C421071&REV-DC\000800]記錄的則是顯示卡的重要資料和參數(shù),一旦這里出錯,往往會導致WINDOWS在啟動時黑屏,然后死掉。 另外還有[HKEY-LOCAL-M ACHINE\Software\Microsoft\Windows\CurrentVersion]里記錄著WINDOWS當前版本的信息以及啟動時執(zhí)行的程序等,這是病毒最愛攻擊和修改的地方。 至于還有[HKEY-CLASS-ROOT]是記錄文件種類及其關聯(lián)信息的,[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界面,表現(xiàn)為啟動過程中硬盤突然不讀。用SCANDISK檢查過硬盤,并沒有發(fā)現(xiàn)問題。在啟動過程中選擇生成BOOTLOG.TXT文件,發(fā)現(xiàn)啟動到硬盤控制器后就斷掉了。本來想用scanreg/restore恢復備份的注冊表,可是該機器為了加快啟動,并沒有自動備份。于是,用regedit把[HKEY-LOCAL-MACHINE\Enum\PCI]分支導出,鍵入:regedit /e hdc.reg HKEY-LOCAL-MACHINE\Enum\PCI;接著用EDIT查看關于硬盤控制器的部分,發(fā)現(xiàn)有"ChannelOptions"=hex:00,問題到這里終于發(fā)現(xiàn)了,原來是有人把IDE控制器設置成不使用,造成在加載硬盤控制器后,系統(tǒng)不能訪問硬盤,所以把它改為:hex:02;再鍵入命令:regedit hdc.reg,把修改后的信息導入。重新啟動機器,一切正常運行了。 這樣,在不損壞任何數(shù)據(jù)的情況下,就把問題解決了。希望這個例子能給大家?guī)磉@種DOS下維護注冊表技巧的啟發(fā),畢竟,我們硬盤上面有很多都是無價的數(shù)據(jù)。