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

Win8 跳出「COM Surrogate 已停止運作」?將 dllhost.exe 加入 DEP 例外排除清單

編輯:Windows 8 系統介紹

使用 Windows 8 時突然彈出「COM Surrogate 已停止運作」錯誤視窗,程式名稱顯示 dllhost.exe。這是資料執行防護 (DEP) 誤判合法的 COM 元件執行行為而終止進程。將 dllhost.exe 加入 DEP 例外排除清單,即可解決誤報問題。本文提供完整圖解步驟。

操作步驟:透過系統進階設定設定 DEP 例外

  1. 在「電腦」/「這台電腦」圖示上按右鍵 → 「內容」** → 左側 「進階系統設定」**。
  2. 在「系統屬性」視窗 「進階」** 索引標籤,「效能」區塊點選 「設定」**。

開啟進階系統設定

效能設定按鈕

  1. 在「效能選項」視窗切換至 「資料執行防護」** 索引標籤。
  2. 選擇 「為除下列選取的程式以外的所有程式及服務開啟 DEP」**(第二個選項)。
  3. 點選 「新增」** 按鈕。

資料執行防護頁面選擇例外模式

  1. 在「開啟」對話框中,瀏覽至 C:\Windows\System32\,找到並選取 dllhost.exe**,點選「開啟」**。
  2. 彈出確認視窗點選「是」將其加入例外清單。
  3. 連續點選三個「確定」關閉所有視窗,重新開機生效。

選取 dllhost.exe

加入例外清單完成

原理說明:什麼是 COM Surrogate 與 DEP 衝突?

  • COM Surrogate (dllhost.exe): 系統為了穩定性,將不穩定的 COM 元件(如縮圖產生器、編碼器)載入獨立的 dllhost.exe 進程執行。若元件當掉,只會終結該 Surrogate 進程,不會讓宿主程式(如檔案總管)崩潰。
  • DEP (Data Execution Prevention): 硬體/軟體機制,防止程式在標記為「非執行」的記憶體區域執行代碼,阻緩緩衝區溢位攻擊。
  • 衝突原因: 部分舊版/第三方 COM 元件(如舊版視訊編碼器、DirectShow 濾鏡)使用動態代碼生成或即時編譯(JIT),在 DEP 眼中類似惡意行為,導致 dllhost.exe 被終止並彈出錯誤。

安全性考量:例外會降低防護嗎?

  • dllhost.exe 是系統核心進程,僅載入已註冊的 COM 元件,攻擊面極小。
  • 將其加入 DEP 例外僅影響 COM Surrogate 進程,不影響其他系統進程的 DEP 保護。
  • 若擔心安全性,可改用 應用程式相容性工具包 (ACT)** 針對特定有問題的元件 DLL 設定 DisableDEP shim,更精準但操作複雜。

若加入例外後仍報錯,進階排查

  1. 事件檢視器 → Windows 記錄 → 應用程式,找 Application Error** 事件,查看 Fault Module Name** 欄位,識別真正導致崩潰的 DLL(如 xyz_codec.dll)。
  2. 更新/移除該 DLL 所屬的軟體(常見:舊版影音編碼器、圖片瀏覽器外掛)。
  3. 執行 sfc /scannow 修復系統檔案。

小結

「COM Surrogate 已停止運作」本質是 DEP 誤判合法 COM 元件行為。將 dllhost.exe 加入 DEP 例外清單,30 秒解決誤報,且風險極低。若問題持續,請查事件檢視器定位具體故障模組並更新對應軟體,治本勝治標。

Copyright © Windows教程網 All Rights Reserved