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

Vista 軟體衝突解決:DEP (資料執行防護) 例外設定教學

編輯:Windows Vista 系統基礎知識

現象

Vista 執行特定舊版軟體(特別是 XP 時代程式)時閃退、報錯「已停止運作」、事件檢視器記錄 APPCRASH、例外碼 0xC0000005 (存取違規)。

根因:DEP (Data Execution Prevention) 誤判合法程式

DEP 監控記憶體區域是否嘗試執行非程式碼資料。舊軟體若使用動態程式碼生成、JIT 編譯、殼加密等技術,可能觸發 DEP 攔截。Vista 預設「僅針對必要的 Windows 程式及服務啟用 DEP」,但部分軟體仍會衝突。

解決:將衝突程式加入 DEP 例外清單

  1. 控制台 → 系統 → 左側「進階系統設定」→「進階」分頁。
  2. 「效能」區塊按「設定」→「資料執行防護」分頁。
  3. 選擇「為除下列選取的程式之外的所有程式及服務啟用 DEP」。
  4. 按「新增」→ 瀏覽選取衝突程式的主執行檔 (.exe) → 開啟。
  5. 確定套用 → 系統提示重新開機 → 重開機生效。
DEP 設定介面
圖:DEP 例外設定介面

命令列快速設定(管理員 cmd)

bcdedit /set nx AlwaysOn
# 確保 DEP 開啟(預設值)

# 無 GUI 介面時可直接編輯登錄檔:
# HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\ExecuteDisable
# 但建議透過 GUI 避免錯誤

驗證 DEP 狀態

wmic OS Get DataExecutionPrevention_SupportPolicy
# 回傳值:0=關閉, 1=僅系統, 2=全部, 3=全部(例外清單)

注意事項

  • 64 位元 Vista:DEP 永遠強制開啟(硬體 NX/XD bit 強制),無法關閉,只能加入例外。
  • 安全性考量:例外清單越多,防禦緩衝區溢位攻擊能力越弱。僅加入確認衝突且來源可信的程式。
  • 永久解法:聯繫軟體廠商更新相容 Vista/DEP 的版本,或尋找替代軟體。

常見衝突軟體類型

類型典型代表原因
舊版遊戲2005 前 DirectX 遊戲SecuROM/SafeDisc 加密殼、動態程式碼
開發工具VC6、Delphi 7、VB6 IDEJIT 偵錯、動態編譯
壓縮/解壓工具舊版 WinRAR、WinZip自解壓模組執行記憶體資料
視訊編碼器VirtualDub 舊版、舊版編碼器組合語言最佳化、手動記憶體管理
Copyright © Windows教程網 All Rights Reserved