C# 如何在C中启用Windows Defender#

C# 如何在C中启用Windows Defender#,c#,windows,msdn,C#,Windows,Msdn,我正在寻找一种在C#中启用(而不是禁用)Windows Defender的方法 我在msdn上找到了这个函数 HRESULT WDEnable( _In_ BOOL fEnable ); 但我可以使用它的一部分MpClient.dll,我在系统上找不到它,所以我不能使用LoadLibrary/GetProcAddress/GetDelegateForFunctionPointer 有人知道另一种方法吗 我应该指出,这适用于需要检查Windows Defender是否已启用(已编码并工作)

我正在寻找一种在C#中启用(而不是禁用)Windows Defender的方法

我在msdn上找到了这个函数

HRESULT WDEnable(
  _In_  BOOL fEnable
);
但我可以使用它的一部分MpClient.dll,我在系统上找不到它,所以我不能使用LoadLibrary/GetProcAddress/GetDelegateForFunctionPointer

有人知道另一种方法吗

我应该指出,这适用于需要检查Windows Defender是否已启用(已编码并工作)以及是否未启用的合法软件


感谢

注册表项有一些访问限制,以防止在用户上下文中运行的任何进程将其关闭。对于一个病毒来说,防止它被检测是非常容易的。要启用它,您必须在管理员上下文中运行。尝试以管理员身份运行进程,并查看是否可以通过这种方式更改注册表项

从msdn文档中: 评论

调用此函数的应用程序必须与管理员一起运行 本地计算机上的权限。Windows Defender还验证(1) 调用进程和所有加载模块的正确签名,以及 (2) 图像特性强制完整性标志设置为on 在允许调用之前,调用进程和所有加载的模块 应用程序更改状态。如果调用进程映像(或任何 已加载的模块)未被Windows签名或标记为威胁 Defender签名,则呼叫失败并出现相应错误 代码


无法通过您的程序轻松打开或关闭Windows Defender。如果这么简单,Windows Defender将无法保护您的计算机,因为任何恶意软件都会将其关闭

有一些注册表项用于定义是否启用了Windows Defender的实时保护。您可以读取这些值以了解它是否处于活动状态。但您不能修改这些密钥,甚至不能在具有系统用户的服务中运行。这些注册表项受Windows保护,以禁止篡改

打开或关闭Windows Defender的唯一方法是:

  • 通过Windows Defender配置面板(msascu.exe)手动执行
  • 安装另一个自动禁用Windows Defender的防病毒软件
如果您对注册表项感兴趣,请在另一个线程中阅读我的答案:

第一步是按“Windows”键和“R”键打开运行对话框 然后在“打开”对话框中键入“services.msc” 按Enter键或单击OK按钮 检查服务列表中的“安全中心” 右键单击安全中心
单击重新启动

也尝试使用注册表:HKLM\SYSTEM\ControlSet001\Services\WdNisDrv->Start,我得到一个未经授权的访问异常在C:\Program Files(x86)\Windows Defender中找到DLL,我可以调用函数。。。但是没有任何变化=/您检查了返回值吗?是的。它返回-2147024891,这意味着访问被拒绝。阅读WDEnable文档中的备注。很可能你的流程不符合上述先决条件是的,我理解。我总是以管理员的身份运行我的开发人员,这没什么区别