桌面文件 Windows 無法啟動!
作者:Wes Miller
如果您曾使用過 Windows,那么就可能曾經看到過它遭遇失敗。盡管 Windows 隨著每一版本的發布日益可靠,但有一些事情是您和 Windows 都無法控制的:驅動程序失敗、系統受到電力中斷的攻擊、文件遭到損壞以及磁盤崩潰。
如果您曾使用過 Windows,那么就可能曾經看到過它遭遇失敗。盡管 Windows 隨著每一版本的發布日益可靠,但有一些事情是您和 Windows 都無法控制的:驅動程序失敗、系統受到電力中斷的攻擊、文件遭到損壞以及磁盤崩潰。發生這些情況時,您擔心不得不另找一臺新計算機。在本專欄中,我將介紹 Windows 系統中可能會出現錯誤的地方以及如何對其進行故障排除以使其重新運行。
接著會發生什么?
在近 20 年的 Windows 使用經歷中,我的系統也同樣出現過無法啟動。根據系統所執行的確切操作,通常可以迅速地找出問題所在。讓我們對 Windows 系統將出現的一些癥狀進行分類,并構建一些案例來了解故障排除。
- 系統無法執行 BIOS POST(開機自檢;通電后也不發出蜂鳴聲)。
- 系統執行 POST,但指示丟失操作系統或找不到操作系統。
- 系統執行 POST 但失敗,并顯示未找到 NTLDR 或未找到 BOOTMGR。
- 系統開始引導,但在啟動過程中掛起。
- 系統開始引導,但在 Windows 桌面出現之前崩潰(并陷在循環中)。
- 系統到達 Windows 桌面,但之后在 Windows 運行時崩潰(并陷入循環中)。
這些情況聽起來好像完全不同,但實際上,其中大部分是由幾個常見問題導致的,通過一些故障排除,您可以找出存在的問題以及您修復它所需執行的操作。其中一種最困難的情況是系統根本無法執行 POST。
遺憾的是,這幾乎總是硬件問題。它所需要的操作可能像更換 CMOS 電池一樣簡單,也可能像新主板或電源一樣復雜。但如果您的系統不執行 POST,您應致電系統 OEM 獲取支持,因為靠您自己不太可能解決這種問題。
使用的工具
只要您的系統執行 POST,您就大有希望恢復,因為問題不是硬件出現故障(當然,有時問題可能同時涉及硬件和軟件)。根據您的系統進入引導進程的程度,您應該可以逐漸從列表中刪除各種“嫌疑”,讓系統重新運行起來。
在啟動之前,您需要準備一些工具:
- 您最好可以訪問另一臺運行 Windows 的計算機,將其用于崩潰分析,它應包括 Windows 調試工具。
- 您應有一套 Microsoft 診斷和恢復工具集 (DaRT) 的副本,它是 Microsoft 桌面優化包 (MDOP) 的組件。您可以找到 30 天在線評估副本。也可以使用 Windows PE CD(最好是版本 2.1,尤其在恢復 Windows Vista 或 Windows Server 2008 系統時)。
- 你應擁有足夠大的 USB 閃存驅動器來轉儲問題系統中的可用內容。
- 您應有從問題系統拆除硬件所必需的工具。
丟失操作系統
如果您的錯誤信息提示丟失操作系統或找不到操作系統(具體文字視您 PC 上使用的 BIOS 而定),那么實際問題是您的系統丟失引導扇區(磁盤上指出引導加載程序位置的扇區)。我僅僅意外遇到過一次這種問題,當時主管的計算機在電源中斷期間遭到電涌的攻擊,令人驚訝的是,這是唯一馬上暴露的問題。
遺憾的是,在進行更深入的調查時,我們發現她的系統似乎丟失了所有分區。搞笑的是,這事發生在 Winternals,之后我們創建了一個 Disk Commander 工具(請參見圖 1),它現在是診斷和恢復工具集的組件。
.gif)
圖 1 Disk Commander 恢復工具
Disk Commander 還可用于恢復整個刪除的目錄。在這一實例中,此工具正適合維修人員使用,因為它可以在磁盤中掃描最近刪除的分區并完全恢復它們(請參見圖 2)。
.gif)
圖 2 使用 Disk Commander 恢復磁盤分區
恢復分區并不能做到萬無一失,但對于最近刪除或丟失的分區,使用 Disk Commander 這類工具可能會有一些成功的機會。當然,這種錯誤可能是由其他問題引發的(通常是硬件)。知識庫文章“啟動基于 Windows XP 的計算機時出現“找不到操作系統”或“丟失操作系統”錯誤消息”深入討論了這一主題。對于 BIOS 問題,如果出現的硬件問題甚至讓磁盤無法顯示,DaRT 或其他任何工具就沒有什么作為了。
丟失引導加載程序
如果您的系統運行 Windows Server 2003 或更早的版本,丟失引導加載程序錯誤將引用 NTLDR;如果您已進行了升級或使用 Windows Vista 或更高版本進行了雙引導,則它將為 BOOTMGR。此消息基本上取決于引導扇區所指向的引導加載程序。
此錯誤通常并不是無端發生的,據我所知,它與我介紹的丟失分區的發生方式幾乎相同。注意:您所要做的就是引導到 Windows PE 并使用 CD 上的 NTLDR 和 NTDetect.com 文件進行替換,或與 Windows 共享這兩個文件。您需要確保替換文件是 Windows 版本,并且是新文件或版本高于您所替換文件(使用所提供最新服務包中的最新副本;這些文件向后兼容)。對于 Windows Vista 或 Windows Server 2008,您應復制 BOOTMGR 文件并確保 Boot 目錄(默認情況下為隱藏)也在該處。
文章“NTLDR 或 NTDETECT.COM 未找到錯誤”提供了更多信息。您可能注意到許多 Microsoft 知識庫文章建議使用 Windows 恢復控制臺,其中一些文章(例如,“如何在 Windows 恢復環境中使用 Bootrec.exe 工具解決和修復 Windows Vista 中的啟動問題”)可能非常有用。
但我的建議是在此情況中使用 Windows PE。雖然恢復控制臺在幾個地方勝過 Windows PE,但 Windows PE 的整體功能和靈活性通常可以使您更方便地完成修復。
我建議您在完成分區或引導加載程序恢復之后運行 chkdsk,以確保您之后不會再遇到任何更大的磁盤損壞。
對于因電源中斷或其他問題引發的文件損壞,我還希望事件日志沒有記錄任何自監控分析與報告技術 (S.M.A.R.T.) 磁盤監視錯誤。如數據丟失嚴重到擦除分區或文件,其成因很容易隨后引發更大的問題。
系統啟動,然后掛起
這一情況有一個許多人都會遇到的癥狀,但它很少會反映真正原因。您將會經常看到 agp440.sys 被指定為掛起的原因。但該驅動程序只不過是不知情的受害者。它只是載入的最后一個驅動程序,正如您在圖 3 中看到的,它顯示了一個在 Windows 啟動之前引導到 Windows 安全模式的系統。
.gif)
圖 3 Windows 安全模式中加載的驅動程序
我讀過的一些文章(包括一些知識庫文章)將禁用該驅動程序視為讓系統重新運行的最佳方式。其實并非如此。若要讓您的系統重新運行,以下是我的建議:
- 首先刪除您最近安裝的所有新硬件。可以一次刪除一個硬件。
- 嘗試是否能從 Windows 安全模式正常啟動。如果可以,很可能是第三方驅動程序引發的問題(因為第三方驅動程序在安全模式中不啟動)。
- 使用 Windows PE 或 ERD Commander(來自 DaRT)來禁用任何新安裝的驅動程序。如需更多信息,請參閱“禁用驅動程序或服務”側欄。
- 嘗試使用“最近一次的正確配置”(以下討論)來查明是否由最近所做的驅動程序更改(并未反映在最近使用的配置集中)引發了問題。
如果這四種方法都無效,您可能需要執行 Windows 修復安裝(從與故障 Windows 安裝相匹配的服務包 CD 引導),或者您可能需要重新安裝 Windows。
Windows 安全模式和還原點
當然,如果您的系統在啟動時掛起或崩潰,轉用安全模式可能會有幫助,尤其是在您沒有現成的 Windows PE 副本且安全模式能起作用時。在 Windows 的客戶端版本上,您還可以使用還原點來恢復系統,假設您已啟用了它們而且它們已經對您需要還原的文件進行了保護(它們不會保護 Windows XP 上的所有內容)。
要特別注意的是,如果您使用 Windows PE 來恢復您的 Windows Vista 系統,請確保您僅使用 Windows PE 2.0 或更高版本來對其進行引導。使用早期版本進行引導將損壞您的還原點,導致其不可用。(這要歸因于 Windows Vista 上的系統還原點監視磁盤寫入的方式。與系統進行交互時,Windows PE 1.x 并不知道如何防止寫入損壞還原點)。
在 Windows 完成加載之前系統崩潰
通常有兩類問題會導致系統 Windows 完成加載之前崩潰。第一類問題是注冊表損壞。這在 Windows 的早期版本以及出現過系統突然重新啟動的系統中更為常見。通常,如果注冊表損壞造成系統無法啟動,只是一小部分注冊表出現了問題。在 Windows Vista 中,\windows\system32\config\regback 文件夾中有兩份注冊表副本,大多數情況下,這兩份注冊表的產生時間均不超過 24 小時。您可以嘗試用它們來替換注冊表文件。
還可以使用我之前介紹的方法在 Windows PE 下脫機加載注冊表有時也可以解決問題。Windows 注冊表編輯器中內置的邏輯會嘗試在出現損壞時進行修復。這種損壞修復在 Windows XP 中很有效,在 Windows Vista 和 Windows Server 2008 中效果甚至更好。
如果您無法通過 Windows PE 1.6 解決問題,則嘗試使用 Windows PE 2.x 或將注冊表復制到 Windows Vista 系統,使用前面提到的方法對其進行修復,然后再重新復制回來。如果這不能讓系統恢復,那么很遺憾,您基本上就無能為力了。您可以嘗試對 Windows 的早期版本進行修復安裝,但通常我建議執行重新安裝。同樣,您應執行 chkdsk 來確認不存在其他問題。
或許,導致系統在 Windows 啟動之前崩潰(藍屏)的最常見問題是驅動程序。我建議準備一張 DaRT CD 并使用故障分析器(請參見圖 4)(這樣就能很方便地分析 Windows 故障轉儲,即使是不可引導的系統也同樣適用)。
.gif)
圖 4 使用故障分析器分析轉儲文件
如果您沒有 DaRT 或者手邊沒有,您也可以使用 Windows PE 和 Windows 調試工具檢查常見的故障點。請注意,故障轉儲可能已損壞,也可能沒有明確做出定論,但它常常會為您指出正確的方向。下面是需要執行的步驟:
- 通過 Windows PE 從崩潰的系統復制最近的 *.dmp 文件。這些文件位于 %windir%\minidump\ 下。如果您已啟用了完全轉儲,它們將位于 Windows 目錄本身,而且至少與系統中的內存一樣大(因此它們是相當大的)。
- 通過“File”(文件)|“Open Crash Dump”(打開故障轉儲)啟動 Windows 調試工具,選擇剛剛復制的轉儲文件。
- 設置符號路徑,為 Windows 二進制文件提供調試信息以供診斷之用。鍵入:
- 鍵入 .reload 并單擊 Enter。
- 鍵入 !analyze –v 并單擊 Enter。
- 結果將很可能指出所涉及的一個或多個驅動程序。
請注意,您通常可能會得到誤報,指出的驅動程序有誤,因此可能需要搜索 Web 查找一些有用的觀點。其他人之前很可能也遇到過與該驅動程序有關的問題。您可以使用前面介紹的步驟來禁用驅動程序或使用安全模式查看是否有作用。
最近一次的正確配置
當您的系統出現問題時,“最近一次的正確配置”(如圖 5 所示)通常會有幫助。它包含一組已成功啟動的最新服務和驅動程序集。但如果注冊表出現損壞,它無法提供保障,也不能有所幫助。只有當 Windows 在 Win32 啟動之前(在您發現 Windows 桌面啟動初始化之前)發生崩潰時,它才能產生影響。否則,這種啟動將被視為“正常”,如果 Windows 在該點之后崩潰,它將無法通過這種方式進行恢復。
.gif)
圖 5 選擇“最近一次的正確配置”可能會令系統啟動
在 Windows 啟動之后系統崩潰
如果您的系統在 Windows 啟動之后崩潰,原因可能是驅動程序,但也可能就是硬件。要進行診斷,請檢索 .dmp 文件(如前所述)并看看您找到了何種線索。
根據 Windbg 的指示,您可以嘗試禁用服務或驅動程序,或者檢查任何新添加的硬件。內存(特別是新添加的內存)或工作不正常的磁盤經常會導致崩潰。您可能需要聯系 OEM 或軟件 ISV,了解他們是否遇到同樣的問題,或者在 Web 上搜索類似的情況。
如果您懷疑內存是問題的根源,請務必試用 Windows 內存診斷工具(包含在 Windows Vista 和 Windows Server 2008 中)。如果您想調查導致崩潰的問題,內存診斷工具可以幫助全面測試系統的 RAM。
雖然 Windows 不能正常啟動的確令人非常沮喪,但其根源只有幾種。當發生這種情況時,如能了解在何處及如何查找原因通常可以幫助您恢復 Windows,而無需重新建立完整映像。
責任編輯:張浩
來源:
微軟TechNet中文站