Windows XP SP3 強制啟用 DEP(Data Execution Prevention,資料執行保護),導致部分老舊軟體(特別是未加殼、使用舊編譯器、或包含即時編譯元件的程式)啟動即閃退、報「DEP 關閉程式」。若確認該軟體可信,需全域關閉 DEP 以維持相容。
boot.ini,右鍵 → 內容 → 取消「唯讀」屬性。boot.ini,找到類似以下的啟動項目行:multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
/noexecute=optin(或 /noexecute=alwayson)修改為 /execute。multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /execute /fastdetect
boot.ini「唯讀」+「隱藏」+「系統」屬性。wmic OS Get DataExecutionPrevention_SupportPolicy,回傳 0 表示關閉。若不想全域關閉 DEP,可在同一「資料執行防止」介面選「為除了我選取的程式之外的所有程式及服務開啟 DEP」→ 新增該軟體執行檔 → 套用。但部分舊軟體載入的 DLL 仍會觸發 DEP,排除清單難以涵蓋完全,全域關閉為最徹底方案。
DEP 是緩衝區溢位攻擊的核心防禦機制。關閉 DEP 會讓系統暴露於記憶體損壞類漏洞利用之下。僅在以下情況考慮關閉:
一般上網、辦公環境強烈建議保持 DEP 啟用,改用單一程式排除或尋找軟體更新版本。
修改 boot.ini 需謹慎,錯誤會導致無法開機。操作前請備份 boot.ini 至他處,確保可用 PE/啟動碟還原。