■ 河南 劉景云
編者按: 筆者單位近期出現(xiàn)DPM 2012 R2服務(wù)器一些關(guān)鍵位置崩潰現(xiàn)象,在無法登錄狀態(tài)下需要進行修復(fù),致使過程非常麻煩,這也提醒我們在日常使用時應(yīng)及時對系統(tǒng)進行備份操作。
單位的一臺DPM 2012 R2服務(wù)器最近出現(xiàn)奇怪故障,當?shù)卿浿蟀l(fā)現(xiàn)其桌面、服務(wù)器管理器等關(guān)鍵位置均處于崩潰狀態(tài),導(dǎo)致無法對該機進行任何有效操作。而且當使用遠程桌面進行登錄時,登錄窗口也消失了,造成無法登錄的情況。
打開服務(wù)器管理器窗口,在事件列表中顯示為“Application Error”的 錯誤信息。選擇某個事件,在詳細信息欄中顯示錯誤的應(yīng)用名稱名稱為“explorer.exe”,錯誤的模塊名稱為“twinui.dll”,異常代碼為“0x80270233”,錯誤偏移量為“0x000000000026e36b”,錯誤進程ID為“0xf08”。
根據(jù)以上情況進行分析,可以看到是因為“explorer.exe”進程發(fā)生了Crash。雖然系統(tǒng)已經(jīng)給出了出錯的DLL模塊,但該信息實際上并不真實,如果針對該DLL模塊進行排查的話,是無法解決問題的。因為系統(tǒng)使用的是Windows Server 2012 R2,之前進行了一次補丁的更新操作,包括系統(tǒng)和一些應(yīng)用軟件的補丁。
那么問題是不是因為打補丁所引發(fā)的呢?因為系統(tǒng)一直是處于無法操作的異常狀態(tài),所以只能首先打開任務(wù)管理器,選擇點擊菜單“文件”→“新建任務(wù)”項,輸入“cmd”命令,在CMD窗口執(zhí)行“regedit.exe”程序,然后在注冊表編輯器中打開“HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogon”分 支, 在 右 側(cè) 雙 擊“AutoRestartShell”鍵值名,將其數(shù)值修改為“0”。
之后在任務(wù)管理器中重啟“explorer.exe”進程,可以看到系統(tǒng)狀態(tài)穩(wěn)定了一些,雖然桌面消失了,但標題欄等部件亂閃問題解決了。
執(zhí) 行“wmic qfe list full /format:htable>d:uding.htm”命令,將補丁信息導(dǎo)出到指定的文件中。打開該文件,可以看到最近安裝的補丁信息,包括補丁名稱、安裝日期、補丁包鏈接、描述信息等內(nèi)容。
經(jīng)過對這些補丁逐一安裝測試,發(fā)現(xiàn)補丁沒有問題,并不會引發(fā)上述故障。實際上這需要借助相關(guān)的高級抓包工具(如WinDBG、TTT Tracer等),抓取“explorer.exe”進程的UserDUMP文件進行深入分析,找出是哪個DLL模塊發(fā)生了損壞或丟失等。
如果該方法無效的話,還需要抓取“explorer.exe”進程的整個啟動過程,來確定究竟在其啟動的哪個階段發(fā)生了Crash故障。
因為Windows是相對封閉的系統(tǒng),通過任務(wù)管理器、事件查看器等工具查看到的各種報錯及警告信息,其所處的級別較低,更深層次的報錯原因和過程,用戶是沒有權(quán)限查看的。
將“explorer.exe”進程啟動的整個過程抓取出來,例如執(zhí)行“C:WinDbgadplus.vbs -crash -pn explore.exe -o d:” 命 令,抓 取和“explorer.exe” 相 關(guān)的DUMP文件?;蛘呦冗\行“C:WinDbgWindbg.exe -I”命令,開啟監(jiān)控模式,之后重啟“explorer.exe”進程,當捕獲到Crash信息后,在WinDbg窗口執(zhí)行“.dump -ma d:extest.dmp”命令來存儲DUMP文件。將得到的DUMP文件發(fā)送給原廠商進行分析,終于發(fā)現(xiàn)問題的根源。
原來,當“explorer.exe”進程在調(diào)用名為“msftedit.dll”模塊時,出現(xiàn)了異常情況,導(dǎo)致“explorer.exe”進程出現(xiàn)Crash故障,該DLL文件和系統(tǒng)提示的“twinui.dll”文件是完全不同的,可能是因為該DLL損壞的原因,導(dǎo)致其加載失敗。
找到了問題根源,解決起來就簡單多了??梢詮恼5姆?wù)器上提取“msftedit.dll”文件,復(fù)制到該DPM 2012 R2服務(wù)器上即可。
但是當服務(wù)器處于運行狀態(tài)時,如果直接向“C:WindowsSystem32”目錄下復(fù)制文件,系統(tǒng)是拒絕訪問的。出于安全考慮,也不建議對該文件夾權(quán)限進行任何修改。
正確的做法是,使用系統(tǒng)安裝盤引導(dǎo)系統(tǒng),進入安裝界面,點擊“下一步”按鈕,在打開窗口中點擊“修復(fù)計算機”項,之后依次點擊“疑難解答”和“命令提示符”項,就可以將正常的“msftedit.dll”文件復(fù)制到本機“C:WindowsSystem32”目錄中了。
注意,在該CMD窗口中原C盤會變成D盤。例如執(zhí) 行“copy msftedit.dll d:windowssystem32”命令,來覆蓋原文件。之后重啟系統(tǒng),可以看到登錄窗口正常出現(xiàn),登錄完成后可以看到系統(tǒng)徹底恢復(fù)正常。
從本故障案例中也可以看出備份的重要性,如果在系統(tǒng)正常的情況下,使用系統(tǒng)自帶的備份工具對系統(tǒng)狀態(tài)進行備份的話,就可以在出現(xiàn)上述問題時及時進行恢復(fù),從而快速有效地解決問題,省去了上述繁瑣的檢測分析操作,有效提高維護效率。