Windows Server 2003 SP1 引入資料執行防護 (DEP),預設為「僅針對必要的 Windows 程式及服務啟用 DEP」。部分舊版應用程式、非標準編譯的軟體、特定外掛模組在 DEP 保護下會被誤判阻擋而無法啟動。本文說明如何透過系統內容介面將 DEP 範圍限縮至核心服務,恢復軟體相容性。
DEP (Data Execution Prevention) 利用 CPU NX/XD 位元標記記憶體頁面為不可執行,防止緩衝區溢位攻擊在資料區域執行殼代碼。預設模式僅保護核心二進位檔與服務,但某些合法程式 (舊版編譯器產生代碼、JIT 編譯器、特定外掛) 會觸發誤判導致 DEP violation 例外終止。


若必須在「為所有程式開啟 DEP」模式下運行特定程式,可在同一介面點擊「新增」瀏覽選取該程式 .exe 檔案加入例外清單。但此做法降低整體防禦姿態,優先建議:
/NXCOMPAT 連結器選項 (VC++ 7.1+)。同樣設定對應登錄值:
路徑:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management 值名:ExecuteDisableBit 類型:REG_DWORD 數值:1 (1=OptIn 僅核心服務, 2=OptOut 所有程式排除例外, 3=AlwaysOn 全開無例外, 0=AlwaysOff 完全關閉)
建議值為 1 (OptIn)。修改後需重開機。
完全關閉 DEP (值 0) 將移除重要緩解措施,使系統暴露於緩衝區溢位攻擊風險。生產環境請務必保持至少 OptIn (1) 模式,並針對個別不相容程式尋求廠商更新或隔離執行 (虛擬機/容器)。
透過簡單的圖形介面調整,即可在維持核心防護的前提下解決大多數舊版軟體相容性問題,是 Win2003 環境下平衡安全與可用性的標準操作。