GetProcessDEPPolicy 错误 87
Posted
技术标签:
【中文标题】GetProcessDEPPolicy 错误 87【英文标题】:GetProcessDEPPolicy error 87 【发布时间】:2016-06-17 19:55:45 【问题描述】:当我尝试检查某个进程是否正在使用数据执行保护 (DEP) 时,我收到错误 87 (INVALID_PARAMETER)。我检查了我的代码,它似乎没问题,但不幸的是我仍然有同样的错误。
代码:
BOOL var = true;
DWORD dwPolicy;
HANDLE hProc = OpenProcess(PROCESS_QUERY_INFORMATION, false, 3624);
if (hProc == NULL)
cout << "Can't open Process because of the error " << GetLastError() << endl;
if (GetProcessDEPPolicy(hProc, &dwPolicy, 0) != FALSE)
if (dwPolicy == PROCESS_DEP_ENABLE)
cout << "For try.exe process data execution prevention is enabled" << endl;
else if (dwPolicy == NULL)
cout << "For try.exe process data execution prevention is disabled" << endl;
else
cout << "Data is thrunked and we can't change DEP value in future" << endl;
else
cout << "There was an error with discovering DEP in try.exe process because of "<<GetLastError() << endl;
编译执行后得到:
There was an error with discovering DEP in try.exe process because of 87
【问题讨论】:
附带说明,如果OpenProcess()
失败,您不应该调用GetProcessDEPPolicy()
。并且不要忘记在打开的HANDLE
上致电CloseHandle()
。
【参考方案1】:
查看文档,定义了函数GetProcessDEPPolicy
:
BOOL WINAPI GetProcessDEPPolicy(
_In_ HANDLE hProcess,
_Out_ LPDWORD lpFlags,
_Out_ PBOOL lpPermanent
);
请注意,最后一个参数是一个 out 参数,它不是可选的,但您传递的是 0 aka NULL
。调用应该是:
BOOL permanent = FALSE;
if (GetProcessDEPPolicy(hProc, &dwPolicy, &permanent) != FALSE)
【讨论】:
谢谢,有帮助以上是关于GetProcessDEPPolicy 错误 87的主要内容,如果未能解决你的问题,请参考以下文章
CreateProcessWithUser 无法模拟用户,出现错误 87、1349
InternetReadFile 问题(错误 87 - 参数不正确)
RegOpenKeyEx 在 MASM64 中返回错误 87
无法启动应用程序(CreateProcess 错误=87),不能使用缩短类路径解决方法
Element.insertAdjacentHTML() API 在 chrome 55.0.2883.87 中引发错误