Windows 中幾乎所有程式都仰賴 DLL (動態連結庫),DLL 異常會導致軟體故障。但一個程式常調用幾十上百個 DLL,如何找出「罪魁禍首」?
一次非法操作後,XP「搜尋小幫手」變白板、「控制台→使用者帳戶」顏面盡失、「開始→說明及支援」點擊無反應。三個程式同時「毀容」,推測受同一 (或幾個) DLL 影響。
Explorer.exe (資源管理器)Helpctr.exetasklist 比對 → 屬 mshta.exe下載 ListDLLs (Sysinternals 經典工具),將 listdlls.exe 放入 C:\Windows。
重開機後,依序執行:
# 1. 基準線:未開啟搜尋小幫手時 Explorer.exe 載入的 DLL listdlls -r explorer.exe > C:\explorer1.txt # 2. 開啟搜尋小幫手後 listdlls -r explorer.exe > C:\explorer2.txt # 3. 比對差異 → 搜尋小幫手專用 DLL fc C:\explorer1.txt C:\explorer2.txt > C:\explorer.txt
重開機 (確保未使用的 DLL 卸載) 後:
listdlls -r helpctr.exe > C:\helpctr.txt listdlls -r mshta.exe > C:\mshta.txt
分析 explorer.txt,排除含 srchasst 路徑的檔案 (搜尋小幫手專用),剩餘 sxs.dll、vbscript.dll、JScript.dll (皆在 C:\Windows\system32)。交叉比對 helpctr.txt 與 mshta.txt,三檔皆存在於兩清單中 → 鎖定三嫌疑犯。
回原電腦確認三檔存在且未損壞。嘗試 regsvr32 重新註冊:
regsvr32 sxs.dll regsvr32 vbscript.dll regsvr32 JScript.dll ← 關鍵!註冊後白板程式恢復正常
系統許多故障源於 DLL,過去只關注「遺失」,其實「未正確註冊」同樣致命。掌握此法:找出共同進程 → 用 ListDLLs 比對差異 → 交叉篩選共用 DLL → 逐一註冊驗證,即能高效解決 DLL 相關疑難雜症。