0
私はC#アプリケーションを持っており、管理者権限で実行します。私はそれのためにDEPを強制したい。プロセスのDEPをオンに設定するか、DEPが無効になっている場合はアプリを強制終了します。C#アプリケーションでデータ実行防止(DEP)を実施
しかし、私は両方で失敗しました。 私のコードは次のとおりです。機能SetProcessDEPPolicyを呼び出す
private static void CheckDEP()
{
var dep = SetProcessDEPPolicy(3);
var handle = Process.GetCurrentProcess().Handle;
var res = GetProcessDEPPolicy(handle, out var flags, out var permanent);
}
[DllImport("kernel32.dll", SetLastError = true)]
static extern bool SetProcessDEPPolicy(uint dwFlags);
[DllImport("kernel32.dll", SetLastError = true, CallingConvention = CallingConvention.Winapi)]
static extern bool GetProcessDEPPolicy(IntPtr hProcess, out uint lpFlags, out bool lpPermanent);
(3)常に(ドキュメントは、それはそれは、64ビットプロセスから呼ばれていた場合にのみ、このエラーを返すべきであると述べているが、これはそうではありません)エラー50で失敗します。
そして、おそらくエラー87(パラメータが間違っている)で呼び出しが失敗するため、GetProcessDEPPolicyにいくつかのバグがあります。たぶん、ハンドルが間違っていますか?
AlwaysOnを選択するBoot.iniを使用して、最新のマシンを実行しています。それをコードで変更するということは、*サポートされていない*です。 –
bcdeditは自分のケースではOptInと言っています –