WinXP 執行特定程式彈出「Access Violation At Address」錯誤,此為資料執行防護 (DEP) 攔截程式非法記憶體存取。將該程式加入 DEP 例外清單即可解決相容性問題。
操作步驟
- 右鍵「我的電腦」→「內容」→「進階」→「效能」→「設定」。
- 「資料執行防護」索引標籤 → 選擇 「僅為我選取的程式和服務開啟 DEP」。
- 點擊「新增」→ 瀏覽選擇報錯程式主執行檔 (.exe) → 開啟。
- 確定 → 再次確定套用 → 重新啟動電腦。
- 重新執行程式,錯誤解除,正常運行。
DEP 核心知識
- 全稱:Data Execution Prevention (資料執行防護)
- 功能:防止程式在標記為「非執行」的記憶體區域執行代碼,阻擋緩衝區溢位攻擊
- 模式:硬體 DEP (CPU NX/XD bit 支援) + 軟體 DEP (Windows 記憶體管理)
- 預設:「僅為基本 Windows 程式和服務開啟 DEP」
適用場景與風險
| 場景 | 處理建議 |
| 舊版合法程式 (無惡意代碼) | 加入 DEP 例外 ✅ |
| 未知來源/可疑程式 | 勿加入例外,掃毒/捨棄 ❌ |
| 系統核心程式 | 不可加入例外 ⚠️ |
| 開發調試階段程式 | 暫時加入例外,發布前修復代碼 🔧 |
替代方案
- 程式相容性模式:右鍵 .exe →「內容」→「相容性」→ 選擇「Windows 2000/XP (Service Pack 2/3)」
- 開發者修復:修正代碼中非法記憶體存取 (指標越界、釋放後使用、棧溢位)
DEP 例外設定為標準解決方案,兼顧安全性與相容性,操作簡單立竿見影。