Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

DLL 檔案損壞導致多程式異常:以 ListDLLs 追蹤共用模組找出幕後黑手

編輯:Windows XP 系統介紹

Windows 程式高度依賴 DLL(動態連結庫),單一 DLL 損壞、遺失或版本衝突,可能同時擊垮多個看似無關的程式。本文實戰示範:當「搜尋小幫手」、「說明及支援」、「使用者帳戶」三個介面同時變成空白,如何透過 ListDLLs 工具比對進程載入的 DLL 差異,精準鎖定罪魁禍首。

案例背景

  • 症狀:搜尋小幫手、控制台→使用者帳戶、說明及支援 三者介面全白、無法啟動
  • 推測:共用某個關鍵 DLL 損壞

偵測流程

第一步:確認各程式對應的進程名稱

  • 開啟目標程式 → Ctrl+Shift+Esc 開啟工作管理員 → 「應用程式」索引標籤右鍵該程式 → 「前往進程」
  • 結果:
    搜尋小幫手 → explorer.exe(屬於總管一部分)
    說明及支援 → helpctr.exe
    使用者帳戶 → mshta.exe(觀察開啟/關閉時進程變化判斷)

小技巧:可用命令列 tasklist /fo table > before.txt、tasklist /fo table > after.txt、fc before.txt after.txt > diff.txt 自動比對進程差異。

第二步:使用 ListDLLs 擷取進程載入的 DLL 清單

  1. 下載 ListDLLs(Sysinternals 套件),將 listdlls.exe 放入 C:\Windows
  2. 開啟命令提示字元(Win+R → cmd)
  3. 重開機(確保快取釋放),依序執行:
REM 1. 基準線:未開啟搜尋小幫手時 explorer.exe 載入的 DLL
listdlls -r explorer.exe > C:\explorer1.txt

REM 2. 開啟搜尋小幫手
REM 3. 再次擷取
listdlls -r explorer.exe > C:\explorer2.txt

REM 4. 比對差異 → 即為搜尋小幫手額外載入的 DLL
fc C:\explorer1.txt C:\explorer2.txt > C:\explorer_diff.txt

第三步:同樣方式擷取 helpctr.exe 與 mshta.exe 的 DLL 清單

listdlls -r helpctr.exe > C:\helpctr.txt
listdlls -r mshta.exe > C:\mshta.txt

每次擷取前建議重開機,避免殘留 DLL 干擾比對。

第四步:交叉比對三份清單,找出共同的異常 DLL

  • 用文字編輯器開啟三份差異檔(或完整清單)
  • 尋找三個程式都額外載入、且路徑可疑(非系統標準目錄、版本異常、時間戳異常)的 DLL
  • 該 DLL 即為「幕後黑手」

ListDLLs 常用參數速查

listdlls [-r] [進程名稱 | PID]        顯示指定進程載入的 DLL
listdlls [-r] [-d DLL名稱]             顯示載入指定 DLL 的所有進程
-r  遞迴顯示完整路徑

後續處理

  1. 確認該 DLL 來源(屬於哪個軟體、更新、惡意程式)
  2. 從備份/安裝媒體/官網取得正確版本覆蓋
  3. 重新註冊:regsvr32 路徑\檔案.dll(若為 COM 元件)
  4. 重開機驗證三程式是否恢復正常

結語

「多程式同時異常」通常指向共用元件故障。ListDLLs 以進程為切入點,配合差異比對,能在幾百個 DLL 中快速定位問題核心,是系統管理員與進階使用者必備的偵錯利器。

Copyright © Windows教程網 All Rights Reserved