我正在寻找一种在C#中启用(而不是禁用)Windows Defender的方法。
我在msdn上找到了这个功能
HRESULT WDEnable(
_In_ BOOL fEnable
);
我可以使用它但它的部分MpClient.dll,我在我的系统上找不到所以我不能使用LoadLibrary / GetProcAddress / GetDelegateForFunctionPointer
有谁知道另一种方法吗?
我应该指出,对于需要检查Windows Defender是否已启用(已编码且正在运行)且未启用它的合法软件。
谢谢
注册表项具有一些访问限制,以防止在用户上下文中运行的任何进程将其关闭。对于病毒来说,很容易阻止它被检测到。要启用它,您必须在管理员上下文中运行。尝试以管理员身份运行您的进程,看看您是否可以通过这种方式更改注册表项。
来自msdn文档:备注
调用此函数的应用程序必须在本地计算机上以管理员权限运行。 Windows Defender还验证(1)正确签署调用进程和所有已加载的模块,以及(2)在允许调用应用程序更改状态之前,在调用进程和所有已加载的模块上设置IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY标志。如果调用过程映像(或任何已加载的模块)未签名或被Windows Defender签名标记为威胁,则调用将失败并显示相应的错误代码。
没有简单的方法可以通过您的程序打开或关闭Windows Defender。如果它如此简单,Windows Defender将无法保护您的计算机,因为任何恶意软件都会将其关闭。
有一些注册表项定义是否启用Windows Defender的实时保护。您可以读取这些值以了解它是否处于活动状态。但是你不能修改这些密钥,甚至不能在SYSTEM用户的服务中运行。这些注册表项受Windows保护,禁止篡改。
打开或关闭Windows Defender的唯一方法:
如果您对注册表项感兴趣,请在另一个主题中阅读我的答案:Find out if Windows Defender disc scan is running?
第一步是按“Windows”键和“R”键打开“运行”对话框,然后在“打开”对话框中键入“services.msc”按Enter键或单击“确定”按钮检查列表中的“安全中心”服务右键单击安全中心单击“重新启动”