注冊表是伴隨著Win95出現在我們面前的,其實它早就在NT中擔當起了重要的作用。采用注冊表來管理系統配置,主要是為了提高系統的穩定性。而系統出現的一些問題(如無法啟動、應用程序無法運行、系統工作不正常等),很多都是因注冊表出現錯誤而造成的,通過修改相應的錯誤數據就能使得Windows工作如初了。但注冊表的結構太復雜,不正確的修改常常會帶來更壞的結果。下面介紹幾種安全恢復注冊表的方法,希望能幫助大家遠離令人頭疼的注冊表問題。
未 雨 綢 繆 篇
Win9X系列操作系統的注冊表,實際上是一個數據庫,它以分層結構存儲著整個計算機的系統配置以及大量應用程序的安裝使用時要調用的各種信息等。它由3個相對獨立的注冊表文件組成:系統配置注冊表文件:system.dat、用戶平臺配置注冊表文件user.dat和網絡管理注冊表文件config.pol。它們存儲在Windows目錄中,其中system.dat中存儲著當前計算機的配置,特別是各種即插即用設備的硬件配置,如設備的I/O地址、中斷號(IRQ)以及DMA的值等;user.dat主要用來定義用戶的優先權,存儲著特定于某一用戶的應用程序的安裝信息等;而config.pol則是只有當Win98的用戶安裝了系統策略編輯器后才會生成的注冊表文件,它存儲的設置可以對網絡用戶的操作做出限制。一般而言,組成一個完整的注冊表文件系統,system.dat和user.dat這兩個文件是必不可少的。
一、文件備份還原法
顯然,及時、正確的備份能夠在計算機發生意外時,比較完全地恢復整個工作進程。對注冊表進行的備份也一樣,利用在正常工作狀態下備份的注冊表可以用來恢復發生錯誤的注冊表,從而達到使系統重新恢復正常工作的目的。
(一)備份
1簡單拷貝法
備份注冊表就是備份system.dat和user.dat這兩個文件。它們的文件屬性都是系統、隱藏、只讀的,因此一般情況下無論在DOS還是Windows窗口狀態都是不可見的,在備份時要注意使用一些“技術”。
在DOS狀態下,請先進入Windows目錄,然后鍵入命令“Attrib -h -r -s
system.dat”,對于user.dat同樣操作,此時就可以將這兩個文件復制到其他的目錄中去了。
在Windows窗口狀態下,在【查看】中選擇【文件夾選項】→【查看】,在【隱藏文件】中選擇【顯示所有文件】,這樣system.dat和user.dat才能在文件夾窗口中顯示出來。剩下的復制工作應該就不用我多說了吧。
2注冊表導出法
將注冊表導出,也是一種不錯的注冊表備份方法。在【開始】→【運行】欄中運行【Regedit.exe】,選【注冊表】→【導出注冊表】,最后選擇導出注冊表文件的存儲位置就可以了。要注意的,在導出注冊表時,千萬要在【導出范圍】中選擇【全部】,否則導出的注冊表文件不完全,將無法用來恢復原注冊表。采用此方法備份后只生成一個文件,它的文件名的后綴是.reg。
(二)還原
1簡單拷貝法的還原
還原的方法當然是重新用備份的文件覆蓋現有文件。不過要注意的是,在覆蓋現有文件前,同樣得先將system.dat和user.dat的文件屬性全部取消,否則系統會拒絕覆蓋操作。在還原前請務必啟動到DOS狀態下,然后再進行此操作。千萬不要在Windows或Windows的DOS窗口下進行此還原操作,否則不但不能恢復注冊表,反而會對注冊表產生極大的破壞。
2注冊表導出法的還原
利用注冊表導出法的注冊表文件還原系統時,既可以在Windows下進行,也可以在DOS下進行。
在Windows下進行時,運行注冊表后選【注冊表】→【導入注冊表】,選擇要導入注冊表文件的所在位置,重新啟動后就可以恢復注冊表。雖然此法無論在安全模式還是正常方式下都可以進行,但為了保險起見,筆者還是建議最好在安全模式下或是干脆用下面介紹的在DOS下進行操作。
在DOS下只能以命令行的方式運行Regedit.exe,但它可以解決無法進入Windows情況下的注冊表恢復問題。其命令行形式:
Regedit [/L: system] [/R: user] filename1
Regedit [/L: system] [/R: user] /C filename2
Regedit [/L: system] [/R: user] /E filename3 regpath1
Regedit [/L: system] [/R: user] /D regpath2
參數含義:
/L: system 指定system.dat文件的存放位置;
/R: user 指定user.dat文件的存放位置;
filename1 指定導入的注冊表數據庫文件名;
/C filename2 利用指定的注冊表文件重新生成注冊表;
/E filename3 導出注冊表文件為指定文件名;
regpath1 將指定開始關鍵字的部分從注冊表文件中導出;
/D regpath2 將指定開始關鍵字的部分從注冊表文件中刪除
具體在恢復注冊表時,可以采取命令行1的形式:Regedit
bak.reg(假設你導出的備份注冊表文件為此文件名)。不過建議采用命令行2的形式,即:Regedit /C
bak.reg,因為此命令不但會將bak.reg中的所有信息導入注冊表,而且會將其中的一些無用的信息(如一些已經被刪除的程序在注冊表中的殘留部分關鍵字等)同時剔除,從而達到壓縮重建注冊表的目的。
順便提一下,命令行2也不一定要在恢復注冊表才使用,平時運行也能壓縮、清除注冊表中的“垃圾”,從而起到提高Windows啟動速度,減少注冊表錯誤發生幾率的作用。筆者就曾經利用此命令將原來6兆的注冊表壓縮為4兆。要注意的是,在使用此命令時,請務必在運行前加載磁盤緩沖smartdrv,否則它的運行時間之長或許足夠你去看一場電影了!
二、系統備份法
正是由于注冊表對于系統的重要性,微軟在開發Win95時就考慮到系統對于注冊表的自動備份問題。盡管它所提供的功能直到Win98才令人稍感滿意,但畢竟這也不失為修復注冊表的方法之一。
(一)Windows 95
當初Win95各版本中提供的系統自動備份注冊表的方法比較簡單,通常是在Windows系統啟動的同時,將當前的注冊表文件備份。具體的做法就是將system.dat和user.dat這兩個文件分別備份為相同屬性的system.da0和user.da0。因此,當系統因注冊表遭破壞無法啟動時,可以手工將system.da0和user.da0這兩個文件拷貝并覆蓋system.dat和user.dat(請注意在操作前,分別將這4個文件的文件屬性全部取消)。盡管這種想法不錯,但由于疏忽和一些無法預料情況的發生,系統自動備份的注冊表經常會在不知不覺中被破壞或備份失敗。例如:①當注冊表的破壞是在上
次關機以前發生的,而當你再次啟動系統時,備份的注冊表其實就是已經遭破壞的注冊表的“完全”拷貝了;②啟動時注冊表為正確的,此時系統自動備份的注冊表也是好的,但在系統啟動過程中發生意外(如突然停電、硬盤意外讀寫錯誤等)導致系統啟動失敗,當你再次啟動時,原來完整的注冊表備份也會被已經遭破壞的注冊表覆蓋。因此,利用system.da0和user.da0這兩個備份文件來恢復注冊表的效果不是十分令人滿意,成功率一般在50%左右。要注意在一次啟動失敗后,盡量不要試圖再次啟動,應該立即用system.da0和user.da0這兩個文件來覆蓋恢復,否則90%以上你的系統是再也無法恢復的了。
(二)Windows 98
Win98對注冊表文件備份系統的改進之處主要體現在以下兩個方面:①備份文件不僅包括system.dat和user.dat,還包括了system.ini和win.ini這兩個初始化文件,大大提高了系統還原的完整性;②備份文件被統一地壓縮在一個文件中,而且備份壓縮文件的數量大大增加,避免了在Win95下一個備份容易發生錯誤無法恢復的現象。
Win98將注冊表的備份文件放在了Windows下面的隱藏子目錄Sysbckup中,備份文件以rbX為名,都是CAB格式的壓縮文件,每個文件包含system.dat、user.dat
、system.ini和win.ini。默認情況下,系統共留有5個(X從000到004,如果某次有錯誤,數字往后順延)壓縮包備份,這5個壓縮包備份分別是你最近5個工作日中第一次啟動計算機時系統所做的備份。請注意,并不是最近5次,舉個例子,如果你每天都使用計算機,那么這5個備份中保存的分別是5天來每天你第一次啟動計算機時的注冊表文件。當某次啟動發生錯誤時,系統會將這時的注冊表文件另外保存為rbbad.cab,以供使用者分析、尋找發生錯誤的原因所在。
了解了Win98的備份原理后,對于注冊表的還原就比較輕松了。如果你可以進入Windows(哪怕是安全模式),想進行備份還原的話,只要用Winzip等支持CAB壓縮格式的軟件選擇最近的或是前幾天的備份壓縮包文件,并將其中的4個文件解壓出來,重新啟動計算機到DOS狀態,利用這些文件覆蓋相應同名文件就可以了。如果你在啟動的時候就無法進入Windows的話,那么可以嘗試在DOS下進行備份還原工作:①利用Windows提供的extract.exe文件,用命令行方式將備份文件展開,直接對系統注冊表文件進行覆蓋還原(假設當前目錄為Windows):extract
/Y . Sysbckup/
rbX.cab,其中X為000~004。②利用Windows附帶的scanreg.exe,在DOS狀態下運行此程序,按提示選擇檢查注冊表,在程序檢查完注冊表后,可以看到【Create
Backups】和【View
Backups】這兩項,前者用來將當前的注冊表備份下來,后者用來查看以前備份的注冊表情況。選擇后者,屏幕將顯示近日來的各備份注冊表文件情況(主要是備份的時間),選擇你想還原的備份,按回車,然后選擇【Restore】開始還原,還原完畢后選擇【Restart】重新啟動計算機就可以了。
注意,當你第一次啟動計算機失敗后,請不要不斷地繼續嘗試啟動計算機,因為scanreg.exe會將啟動失敗的注冊表都一一依次備份下來,如果你連續啟動失敗5次的話,也就意味著原先備份的5個完好的注冊表都將被這連續5次的壞注冊表所替代,也就失去了利用它們來還原系統注冊表的機會。因此,在啟動失敗后,請盡量不要一而再再而三地連續啟動,應及時地進行注冊表還原工作。
亡 羊 補 牢 篇
古人云:亡羊補牢,為時未晚。如果你從來就沒有備份注冊表的習慣,或是在Windows下所有的系統自動備份都已經如前所述被已遭破壞的注冊表文件所替代了的話,那么試試下面的方法,或許能使你的機器再次正常地運轉起來。
一、保守還原法
一般而言,當Win9X在成功安裝完畢后,會自動將第一次正常運行時的系統信息(其實也就是注冊表信息,主要是相應的硬件信息)保存在C盤根目錄下的system.1st這個文件中。利用它,有可能將系統恢復到最初安裝時的狀態。具體的做法如下:在DOS下,首先去除system.1st以及Windows目錄下system.dat的文件屬性(它們都是系統、只讀、隱藏屬性),然后將system.
1st拷貝為system.dat來覆蓋系統的system.dat,最后重新啟動計算機。如果啟動成功,還得對系統進行大幅度地調整才能恢復到破壞前的狀態。
二、“李代桃僵”法
如果有和你的硬件配置大致相同的計算機,可以用那臺計算機上的注冊表文件(system.dat和user.dat)來覆蓋自己計算機上的注冊表文件,然后啟動。如果可以進入Windows,再對系統做相應的修改,就能恢復如初了。盡管這種方法成功的概率比較?。ù蠹s在25%左右),但這也是不得已而為之,或許能將你的“死馬”真的醫活了。
如果上面的招數對你都無效,那我再教你一記“超級絕招”——準備好你的Windows安裝光盤,然后Setup吧!筆者憑著對注冊表的了解(經常在里面修修改改)以及以上幾大絕招,創造了自上年10月安裝Win98至今沒有重新安裝的個人新記錄。(摘自注冊表之家)
新聞熱點
疑難解答