Windows Defender - 以编程方式添加排除文件夹

Windows Defender - Add exclusion folder programmatically

我出于研究目的检查了不同的键盘记录器,偶然发现了 Refog:

https://www.refog.com/keylogger/

这个程序可以捕获很多系统事件,但真正引起我注意的是别的东西。该程序创建了一个名为 Mpk 的隐藏文件夹,路径为 C:\Windows\SysWOW64\Mpk。它被标记为操作系统文件夹,因为在我取消标记 Hide protected operating system files (recommended) 之前它是不可见的。我想这可以通过这样的 attrib 命令来完成 attrib +s +h "C:\Windows\SysWOW64\Mpk" 所以没什么革命性的。

但是,他们还为此文件夹向 Windows Defender 添加了一个排除项。他们如何以编程方式执行此操作?我是 运行 Windows 10 Pro x64。

经过一番挖掘,我发现了以下文件夹:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Defender\Exclusions\Paths

我无法为我的用户添加密钥。我收到以下错误:Cannot create key: You do not have the requisite permissions to create a new key under Paths

但是 SYSTEM、WinDefend 和 TrustedInstaller 都具有 完全控制。最好的猜测是他们使用了 DevxExec devxexec.exe /user:TrustedInstaller cmd 之类的东西并将密钥写入注册表。

执行此操作的正确方法是使用 Add-MpPreference PowerShell cmdlet。使用此 cmdlet 为文件扩展名、路径和进程添加排除项,并为高、中和低威胁添加默认操作。

您可以使用以下命令行从 Windows 10 中提升的 cmd shell 轻松执行此操作:

powershell -inputformat none -outputformat none -NonInteractive -Command Add-MpPreference -ExclusionPath "C:\Windows\SysWOW64\Mpk"

最简单的方法是在 CMD 中使用具有提升权限的 PowerShell(如 ),但您也可以使用 PowerShell 环境变量让您的生活更轻松;例如:

powershell -inputformat none -outputformat none -NonInteractive -Command Add-MpPreference -ExclusionPath $ENV:USERPROFILE\Downloads

这将添加当前用户的下载文件夹,例如。 C:\Users\Susana\Downloads.

要获取 PowerShell 提供的环境变量列表,您可以使用此 PowerShell 命令:

Get-ChildItem Env: | Sort Name

如您所见,有 windir 变量。除了您提到的子文件夹之外,他们还可以使用它。

转到 powershell

添加-MpPreference -ExclusionPath "C:\Temp"

参考: https://docs.microsoft.com/en-us/powershell/module/defender/add-mppreference?view=win10-ps

运行 在提升的 shell 中(在“开始”菜单中搜索 cmd 并按 Ctrl+Shift+Enter)。

powershell -Command Add-MpPreference -ExclusionPath "C:\tmp"
powershell -Command Add-MpPreference -ExclusionProcess "java.exe"
powershell -Command Add-MpPreference -ExclusionExtension ".java"

powershell -Command Remove-MpPreference -ExclusionExtension ".java"

只是觉得我会 post 因为它确实花了我几秒钟的时间来弄清楚如何在 C# 中执行此操作,但这是适合我的代码:

        var elevated = new ProcessStartInfo("powershell")
        {
            UseShellExecute = false,
            CreateNoWindow = true,
            Verb = "runas",
            Arguments = " -Command Add-MpPreference -ExclusionPath '" + directory + "'"
        };
        Process.Start(elevated);