主題: 註冊表攻略
查看單個文章
舊 2006-01-14, 01:33 PM   #5 (permalink)
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設

17、註冊表完全恢復手冊
  註冊表是伴隨著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才能在資料夾視窗中顯示出來。剩下的複製工作應該就不用我多說了吧。
2P註冊表匯出法
將註冊表匯出,也是一種不錯的註冊表制作備份方法。在【開始】→【執行】欄中執行【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也不一定要在恢復註冊表才使用,平時執行也能壓縮、清除註冊表中的「LJ」,從而起到提高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個文件的文件內容全部取消)。儘管這種想法不錯,但由於疏忽和一些無法預料情況的發生,系統自動制作備份的註冊表經常會在不知不覺中被破壞或制作備份失敗。例如:
1當註冊表的破壞是在上次關機以前發生的,而當你再次啟動系統時,制作備份的註冊表其實就是已經遭破壞的註冊表的「完全」拷貝了;
2啟動時註冊表為正確的,此時系統自動制作備份的註冊表也是好的,但在系統啟動程序中發生意外(如突然停電、硬碟意外讀寫錯誤等)導致系統啟動失敗,當你再次啟動時,原來完整的註冊表制作備份也會被已經遭破壞的註冊表覆蓋。因此,利用system.da0和user.da0這兩個備份檔案來恢復註冊表的效果不是十分令人滿意,成功率一般在50%左右。要注意在一次啟動失敗後,盡量不要試圖再次啟動,應該立即用system.da0和user.da0這兩個文件來覆蓋恢復,否則90%以上你的系統是再也無法恢復的了。
(二)Windows 98
Win98對註冊表文件制作備份系統的改進之處主要體現在以下兩個方面:1備份檔案不僅包括system.dat和user.dat,還包括了system.ini和win.ini這兩個啟始化文件,大大提高了系統還原的完整性;2備份檔案被統一地壓縮在一個文件中,而且制作備份壓縮檔案的數量大大增加,避免了在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下進行制作備份還原工作:
1利用Windows提供的extract.exe文件,用指令行方式將備份檔案展開,直接對系統註冊表文件進行覆蓋還原(假設當前目錄為Windows):extract /Y. Sysbckup\ rbX.cab,其中X為000∼004。
2利用Windows附帶的scanreg.exe,在DOS狀態下執行此程序,按提示選項檢查註冊表,在程序檢查完註冊表後,可以看到【Create Backups】和【View Backups】這兩項,前者用來將現用的註冊表制作備份下來,後者用來檢視以前制作備份的註冊表情況。選項後者,螢幕將顯示近日來的各制作備份註冊表文件情況(主要是制作備份的時間),選項你想還原的制作備份,按Enter鍵,然後選項【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,再對系統做相應的修改,就能恢復如初了。儘管這種方法成功的概率比較小(大約在25%左右),但這也是不得已而為之,或許能將你的「死馬」真的醫活了。
如果上面的招數對你都無效,那我再教你一記「超級絕招」—準備好你的Windows安裝光碟,然後Setup吧!筆者憑著對註冊表的瞭解(經常在裡面修修改改)以及以上幾大絕招,創造了自上年10月安裝Win98至今沒有重新安裝的個人新記錄。
__________________
http://bbsimg.qianlong.com/upload/01/08/29/68/1082968_1136014649812.gif
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次