簡體   English   中英

GetProcessDEPPolicy 說永久但不是

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM