[英]GetProcessDEPPolicy says permanent but it's not
我有一個在 Windows 10 上運行的 32 位可執行文件。系統 DEP 設置為 OptIn。
我調用 GetProcessDEPPolicy 並返回:
dwFlags == 0 // DEP is disabled
bPermanent == 184 // which means TRUE, so permanent
這意味着我不應該改變它。 然而,這在啟動時是正確的,所以我應該能夠改變它。
在任何情況下,如果我忽略 bPermanent 並使用 PROCESS_DEP_ENABLE 調用 SetProcessDEPPolicy,然后再次調用 GetProcessDEPPolicy,它將返回:
dwFlags == 1 // DEP is enabled
bPermanent == 1 // Also TRUE, so supposedly still permanent
如果我再次調用 SetProcessDEPPolicy,那么它開始失敗並且我無法將其改回。
所以我的問題是:為什么 GetProcessDEPPolicy 在第一次調用時返回 bPermanent? 它確實看起來像是一個錯誤/回歸,我認為這是行為上的變化,因為這段代碼已經存在了十年,而且我確信它在 Windows 7 和 8 中可以正常工作。
這是 GetProcessDEPPolicy 函數中的一個缺陷。 您可以通過使用 GetProcesMitigationPolicy 函數來解決它。
PROCESS_MITIGATION_DEP_POLICY policy = { 0 }; // important to preinitialize with 0
GetProcessMitigationPolicy(hProcess, ProcessDEPPolicy, &policy, sizeof(policy));
對不起。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.