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