为什么 Windows Defender 扫描我的代码?

Why is Windows Defender scanning my code?

我正在使用 Visual Studio 2019 编译 C++ 代码。代码范围从简单的项目到学习 C++ 功能再到游戏开发。但无论项目的范围如何,我都会收到此消息:

Security Scan Required Your administrator requires a security scan of this item. The scan could take up to 10 seconds.

这会拖延 Visual C++ 编译器并最终减慢我的工作流程。每次我尝试编译我的代码时都会发生这种情况。奇怪的是,在同一台机器上我一直在编译代码而没有这个问题。我不确定是什么导致了此更改,我想还原它但不知道如何还原。

这里的问题是由于 Windows Defender Real-Time 保护,这对保证系统安全非常重要。我找到的解决方案基于这些文章:

Microsoft description of the problem and simple fixes

How to create and run Windows Powershell scripts

Powershell script that excludes all the necessary directories and processes for Visual Studio 2019

解决方案是将 Windows Defender Exclusions 添加到您用于开发环境的所有进程和目录中,这对您自己做起来相当复杂,并且根据您选择的开发环境而有所不同,在这里我正在使用 Visual Studio 2019 并将使用 Powershell 脚本快速添加这些排除项。

只需下载 Powershell 脚本,打开 Windows Powershell,然后输入 Set-ExecutionPolicy Unrestricted

然后导航到脚本目录。为简单起见,将脚本放在根 C: 并导航到那里,然后键入 ./{Script name} “./”对于 non-default 目录中的 运行 脚本很重要。

该脚本会询问您将项目文件夹存储在哪里,这对于从 Windows Defender 中排除很重要。 运行完成脚本后,您就大功告成了。

最后一步,Set-ExecutionPolicy Restricted 然后 Get-ExecutionPolicy 验证它是否受到限制,不要忽视您的 Powershell 执行策略,因为它是一个非常强大的攻击向量,这一点非常重要。

我已经完成了这些确切的步骤,并且可以验证 Windows Defender 不再使用 Visual Studio 2019 停止我的代码构建。这可能意味着 运行 使用旧版本或更新版本具有不同目录结构的 Visual Studio 将需要另一个脚本,或者 Microsoft 可以介入并创建一个通用解决方案以排除他们自己的开发环境形成 Windows Defender 扫描。

转到

Start > Settings > Update & Security > Windows Security > Virus & threat protection 

在病毒和威胁防护设置下,select 管理设置,然后在排除项下,select 添加或删除排除项。 Select 添加排除项,然后 select 来自文件、文件夹、文件类型或进程的文件类型 .cpp

Add an exclusion to Windows Security

好的,我在 VSCode 中使用 CodeRunner Extension 时也收到此消息。每次我 运行 使用 CodeRunner 的代码时,我都会收到此通知。

对我有用的解决方案很简单:

  1. 转到病毒和威胁防护。
  2. 关闭这两个选项:Cloud-delivered保护,自动提交样本。就像这样:

OP 标记为已接受的答案有效。不过他说的脚本肯定是写在上面的,所以我新建了一个脚本(创建脚本见上面post中提到的第2个link),把代码从Github https://gist.github.com/dknoodle/5a66b8b8a3f2243f4ca5c855b323cb7b 并粘贴到我的脚本和 运行 Powershell 中的命令 ./{Name of your script} 中。请务必以管理员模式打开 PowerShell。此外,如果您将脚本粘贴到 C: 根目录并想打开脚本,请确保您的命令指向 C: 的根文件夹。您可以键入 cd.. 以退出该目录。