XP系統開機提示正常運行Windows所需的檔案已被替換成無法識別的版本的解決方案

來源:互聯網
上載者:User

解決方案:

1、插入系統安裝光碟片,並運行sfc /scannow命令檢測並修複可能受損壞和更改的系統檔案。

2、在“開始→運行”對話方塊中鍵入“gpedit.msc”,開啟“本機電腦策略→電腦配置→系統管理範本→系統”視窗,找到“Windows檔案保護”,在右側邊窗格中雙擊“設定Windows檔案保護掃描”項,修改為“已禁用”。

3、開啟“登錄編輯程式”,找到【HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon】右側視窗中的“SFCDisable”索引值修改為“ffffff9d”,如果需要重新啟用該功能,重新設定為“0”就可以了。

4、首先,如果被替換的檔案不是關鍵性的系統檔案(即系統檔案被替換後仍然不影響系統的運行),

而你又不喜歡它那個提示對話方塊,這時候你就可以把它的提示關閉。

關閉方法:

[點擊開始菜單]→[運行]→[輸入命令:cmd]→[然後在彈出的視窗裡面直接輸入命令:sfc /cancel] 呵呵,這樣提示應該就會沒了。

還有一種方法就是:

當它在快顯視窗的時候,你插入系統安裝盤,然後根據提示修複被替換的檔案。當你安裝一個應用程式卻不料引起Windows崩潰的時候,很有可能是因為應用程式改寫了關鍵的Windows系統檔案,導致系統崩潰。在檔案被修改後,結果往往不可預知。系統可能正常運行,或者出一些錯誤,或者完全崩潰。幸運的是,Windows 2000, XP,和Server 2003應用了一個稱作Windows檔案保護(Windows File Protection,WFP)機制,它可以防止關鍵的系統檔案被改寫。在這篇文章中,我將解釋何謂WFP和它是如何工作的。我還要告訴你如何修改或忽略 WFP的行為。

溫馨提示:儘管在Windows 2000, XP,和Server 2003上,WFP的運行沒什麼區別,但這篇文章中的資訊,包括註冊表相關條目和SFC文法,是針對XP的。

Windows檔案保護是如何工作的?

WFP被設計用來保護Windows檔案夾的內容。WFP保護特定的檔案類型,比如SYS、EXE、DLL、OCX、FON和TTF,而不是阻止對整個檔案夾的任何修改。註冊表索引值決定WFP保護的檔案類型。

當一個應用程式試圖替換一個受保護的檔案,WFP檢查替換檔案的數位簽章,以確定此檔案是否是來自微軟和是否是正確的版本。如果這兩個條件都符合,則允許替換。正常情況下,允許替換系統檔案的檔案種類包括Windows的服務包,補丁和作業系統升級程式。系統檔案還可以由Windows更新程式或 Windows裝置管理員/類安裝程式替換。

如果這兩個條件沒有同時滿足,受保護檔案將被新檔案替換,但將很快被正確的檔案替換回來。

當這種情況發生時,Windows會從Windows安裝CD或者電腦的DLLCache檔案夾中複製正確版本的檔案。

Windows檔案保護並不僅僅通過拒絕修改來保護檔案,它還可以拒絕刪除。來看看WFP的做法,開啟WINDOWSSYSTEM32檔案夾並將 CALC.EXE檔案重新命名為CALC.OLD。當你這樣做時,一個訊息將提示你如果改變這個檔案的副檔名可能會導致這個檔案不可用。點擊Yes按鈕確認這個警告。現在,等幾分鐘後按F5鍵以重新整理檔案系統的視圖,完成替換可能要花些時間。當檔案最終被替換後,Windows會在事件記錄中做相應的記錄。

關於WFP值得關注的一點是它和Windows安裝程式結合的很緊密。無論何時,如果Windows安裝程式需要安裝一個受保護的檔案,它就把這個檔案交給WFP,而不是自己試圖去安裝這個檔案。然後由WFP判斷是否允許安裝。

系統檔案檢查

雖然自動檔案替換會節省時間,但也存在需要手動幹預的情況。例如,你可能不願意空等著WFP去判斷受保護的檔案是否已經被替換。幸運的是,你可以用一個名為系統檔案檢查(SFC)的工具手動控制WFP。

SFC是一個命令列工具,需要在命令提示字元視窗下運行。它的文法像這樣:SFC [/SCANNOW] [/SCANONCE] [/SCANBOOT] [/REVERT] [/PURGECACHE] [/CACHESIZE=x] /SCANNOW選項通知SFC立即掃描所有受保護的系統檔案。如果在掃描過程中發現一個錯誤的檔案版本,這個錯誤的版本將被替換為微軟正確的版本。當然,這意味著你可能必須有Windows安裝CD,最新的服務包或者升級補丁。

/SCANONCE參數通知WFP在系統下次啟動的時候掃描受保護的系統檔案。在掃描過程中,任何錯誤的檔案將被正確的版本替換。正如這個參數名的意思,這個掃描只進行一次。之後的系統啟動將恢複正常,SFC不再運行。

/SCANBOOT參數和/SCANONCE選項類似。區別在於SCANONCE只在Windows下次啟動時掃描受保護的檔案,而SCANBOOT 參數則在Windows每次啟動時都掃描系統檔案。如果需要,這兩個參數將替換錯誤的系統檔案,這可能需要你提供正確檔案版本的拷貝。

/REVERT選項用來關閉SFC,例如,假設你使用SCANBOOT選項在每次系統啟動的時候掃描所以保護的檔案。正如你所能想到的,這確實會增加電腦啟動的總時間。最後,你可能厭倦了漫長的啟動時間,想關閉SFC。只需要簡單的使用SFC /REVERT,就可以在啟動的時候關閉SFC。

對/PURGECACHE選項就需要謹慎些。在這之前,我解釋說Windows使用一個快取檔案夾來儲存各類系統檔案正確版本的備份。如果你運行 SFC /PURGECACHE命令,那麼這個檔案快取將被清空,那些備份檔案將被刪除。這個命令還會導致Windows開始掃描各類受保護檔案,並在掃描的同時重建這個檔案快取。當然,這可能意味著你必須向Windows提供Windows安裝CD或系統檔案升級的拷貝。

最後一個SFC命令選項是/CACHESIZE=x。對於檔案快取的預設大小確實存在很多自相矛盾的資訊,在寫這篇文章的時候,我發現三篇不同的微軟知識庫文章中指定的檔案快取的預設大小都不一樣。一篇文章中建議檔案快取的大小為50 MB,而另一篇建議的大小卻是300 MB。更有甚者,第三篇指出這個大小應該是無限的。其實預設值的大小並不重要,因為你可以根據你的需要,使用CACHESIZE選項來改變這個檔案快取的大小。

在使用CACHESIZE選項時,你必須鍵入命令SFC /CACHESIZE=x,這個x是指你想分配給檔案快取的MB數。在指定了新的檔案快取大小後,你必須重啟系統並運行SFC /PURGECACHE命令。

通過註冊表控制WFP和SFC

在這之前,我解釋說註冊表控制WFP的一般行為。你可以修改幾個不同的註冊表索引值以控制WFP的行為。你可以在每次運行SFC直接操作這些鍵的一部分,其他一些有更低層級的功能。比如指定檔案快取或者安裝檔案的位置。

修改註冊表可能是危險的。如果你做了一個錯誤的修改,可能會導致Windows的崩潰或者破壞你的應用程式,所以我強烈建議在嘗試這一節中描述的任何技術之前,先對註冊表做一個完整的備份。

為了訪問SFC的註冊表鍵,在Run命令中鍵入REFEDIT命令。這將開啟登錄編輯程式,現在瀏覽註冊表樹找到下面這個鍵: HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinLogon 通常地,註冊表中WinLogon鍵一般用來控制各種不同的啟動選項。雖然許多SFC的選項都可控制SFC是否在啟動的的時候運行,但微軟已經將SFC相關的註冊表鍵放在這個部分。

SFCDisabled

這個註冊表鍵控制SFC是啟用的還是無效的。實際上你只需通過改變DWORD的值,就可以得到四個不同的選項。預設的DWORD值是0。這個設定啟用SFC。通常你不需要改變這個值。然而,你可以在0到4之間修改這個值使得啟用SFC但不讓它彈出。

如果將核心調試器掛起,你最好關閉SFC。如果正在使用一個核心調試器,你可以將註冊表鍵的DWORD值修改為1,這會關閉SFC並且會在以後的每次啟動時都提示你是否再次啟用SFC。

你也可以通過將DWORD值設為2來關閉SFC。這個選項只是在下次啟動時關閉SFC。沒有再啟用SFC的選項,因為SFC將在這之後啟動時自動啟用。

SFCScan

在這之前,我解釋了SFC的SCANONCE, SCANBOOT,和REVERT選項。只要你使用這些選項,實際上SFC是在修改SFCScan註冊表鍵。你可以通過改變它的DWORD賦值來修改這個鍵。 預設的值是0。這個值的意思是不需要在啟動時掃描受保護檔案。這個設定相當於運行SFC /REVERT命令。 改變DWORD值為1,意思是在每次啟動時都掃描受保護檔案。設定SFCScan的值為1相當於運行SFC /SCANBOOT命令。

最後,設DWORD值為2就是告訴SFC在下次啟動時掃描受保護檔案,但並非以後的所有啟動。

這相當於運行SFC /SCANONCE命令。

SFCQuota

SFCQuota註冊表鍵用來控制SFC檔案快取的大小。或許你會記得,之前在我談到SFC /CACHESIZE=x 命令時,我提到關於檔案快取的預設大小,存在許多不一致的資訊。然而在我的系統上,註冊表鍵SFCQuota的DWORD值預設為0xffffffff。根據微軟知識庫,這個值對應檔案快取的大小為300 MB。同一篇知識庫的文章指出通過修改這個值為FFFFFFFF,你可以緩衝儲存所有受保護的系統檔案。

SFCDllCacheDir 在這之前,我解釋說Windows將DLLCACHE檔案夾作為儲存系統檔案備份的地方。通常的,這個檔案夾位於WINDOWSSYSTEM32目錄下。不過通過修改SFCDllCacheDir註冊表鍵,你可以修改檔案快取的位置。

檔案快取檔案夾一般位於DLLCACHE目錄下,但通過修改這個註冊表鍵,你可以修改這個檔案夾的位置。唯一需要注意的一點是你必須指定一個已經存在於本地硬碟上的地址。在Windows 2000裡,你可以指定一個網際網路共用作為DLLCACHE的路徑,但在Windows XP中沒有這個選項。

SFCShowProgress

另一個與SFC相關的註冊表鍵是SFCShowProgress鍵。這個註冊表鍵允許你設定它的DWORD值為0,或1。預設值是0,它將禁止顯示SFC的進程情況。設值為1就可以讓SFC顯示進展情況。

源檔案地址

在這之前,我解釋了WFP和SFC是如何工作的,我指出在某些條件下你可能必須提供Windows安裝CD或者有效源檔案的拷貝。然而通過修改註冊表,向Windows指明一個源檔案目錄是完全可能的,而無需Windows再向你詢問這些檔案。

這個註冊表鍵在註冊表的另一部分。你必須找到下面這個鍵: HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionSetup 一旦你找到了這個位置,通過使用一個磁碟機符號或者路徑或者一個UNC,你可以指定Windows系統檔案的位置。

使用這個命令的前提是你必須將檔案放在名為I386的目錄中。例如,如果你的Windows系統檔案位於一個名為C:I386的目錄中,那麼你只需在註冊表中指定路徑為C:,因為Windows假定I386這個目錄是存在的。同樣的,如果你打算使用一個UNC共用,I386檔案夾必須存在於共用目錄下。例如,如果你打算共用的目錄名為FILES,你需要將I386檔案夾放在FILES目錄下。然後你可以告訴Windows 在\server_nameFILES目錄下尋找共用檔案。Windows將在\server_nameFILESI386目錄中尋找系統檔案。

以上就是XP系統提示正常運行Windows所需的檔案已被替換成無法識別的版本的解決方案,有同樣問題的朋友可以按照上述的方法進行設定解決!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.