在C#app中实施数据执行保护(DEP)

时间:2017-03-23 16:49:34

标签: c# .net security dep

我有一个C#应用程序将以管理员权限运行。我想强制DEP为它。如果DEP被禁用,则为进程设置DEP On或者终止应用程序。

但我两个都失败了。 我的代码是:

SELECT customer.customer_id as cust_id
       SUM(payments.payment) as cust_pmts
       (SUM(payments.payment)/6) as Jan_cohort_clv
FROM telemon_payments_data payments
LEFT JOIN telemon_customer_data customer
ON payments.customer_id = customer.customer_id
GROUP BY 1
HAVING customer.account_created_on between "2016-01-01" and "2016-01-31"

调用函数SetProcessDEPPolicy(3)总是失败并出现错误50(文档说它只有在从64位进程调用它时才会返回此错误,但事实并非如此)。

我可能在GetProcessDEPPolicy中有一些错误,因为调用失败并出现错误87(参数不正确)。也许Handle错了?

1 个答案:

答案 0 :(得分:0)

因此,解决方案是更改 Configuration Manager 中的构建配置,从AnyCPU到x86 。现在两种方法都按预期工作。

AnyCPU的错误与x64相同(默认情况下强制执行DEP,这些方法应返回上述错误)。