動態連結庫(DLL)是 Windows 程式共用的核心元件,幾乎每個應用程式啟動時都會載入數十上百個 DLL。當系統出現「搜尋助理變白板」、「控制台使用者帳戶空白」、「說明與支援無法啟動」等詭異症狀時,往往是某個關鍵 DLL 遺失、損壞或未正確註冊所致。但系統中成千上萬的 DLL,該如何快速找出真兇?本文透過實戰案例,示範使用 ListDLLs 工具與差異比對法,精準定位故障模組。
直覺判斷:三者受同一(或少數)DLL 影響。策略:找出三者共同呼叫的 DLL,再逐一驗證。
explorer.exe(資源管理器)一部分。helpctr.exe。mshta.exe(HTML 應用程式主機)。小技巧:亦可用命令列 tasklist /fo table > C:\acc1.txt 捕捉開啟前後的進程清單,再用 fc 比對差異。
下載 ListDLLs(Sysinternals 官方工具),將 listdlls.exe 放入 C:\Windows。
REM 重新開機確保記憶體乾淨
listdlls -r explorer.exe > C:\explorer1.txt
REM 開啟「搜尋助理」
listdlls -r explorer.exe > C:\explorer2.txt
fc C:\explorer1.txt C:\explorer2.txt > C:\explorer.txt
explorer.txt 中新增的行即為「搜尋助理」專用 DLL。
同理分別擷取 helpctr.exe、mshta.exe 的 DLL 清單:
listdlls -r helpctr.exe > C:\helpctr.txt
listdlls -r mshta.exe > C:\mshta.txt
注意:每次擷取前皆需重開機,確保未使用的 DLL 從記憶體卸載,避免干擾。
打開 explorer.txt,過濾含 srchasst 路徑的行(搜尋助理專用),剩餘共用 DLL 包含:
C:\Windows\system32\sxs.dllC:\Windows\system32\vbscript.dllC:\Windows\system32\jscript.dll在 helpctr.txt、mshta.txt 中搜尋,三檔皆存在上述三個 DLL → 高度可疑。
回到故障機器,確認三檔案存在且大小正常。嘗試重新註冊:
regsvr32 sxs.dll
regsvr32 vbscript.dll
regsvr32 jscript.dll ← 關鍵!執行後故障症狀全數消失
結論:jscript.dll 註冊資訊損壞(而非檔案遺失),導致所有依賴 JScript 引擎的系統元件失效。
regsvr32 往往是終極解藥。許多系統故障並非 DLL 遺失,而是註冊資訊損毀。掌握「進程 → DLL 差異 → 交集 → 重註冊」四步法,即可化身 DLL 偵探,輕鬆破案。