1. 项目概述与核心诉求
最近在几个技术群里,经常看到有朋友在讨论一个老生常谈但又总有人踩坑的问题:怎么在Windows 10和11上彻底关掉或者移除Windows Defender。有人是为了跑一些自己写的脚本或者小众开发工具,被误报拦截搞得心烦意乱;有人是觉得它后台扫描太吃资源,影响游戏帧数或者视频渲染速度;还有搞渗透测试或安全研究的朋友,需要在一个干净、无干扰的环境里运行一些特定程序。大家的诉求很明确——不是简单地“关闭实时保护”,而是希望这个系统自带的防护组件能彻底“安静”下来,不再弹出烦人的提示,不再占用不必要的资源,也不再干扰我们的正常工作流。
我自己的经历也差不多。早些年做本地服务器压力测试,Defender的实时扫描会时不时跳出来“卡”一下磁盘I/O,导致测试结果波动很大。后来折腾一些需要修改系统底层文件的工具时,也总被它当作威胁给隔离掉。经过无数次尝试、踩坑,甚至重装系统,我总结出了一套相对完整、安全且可逆的“管控”方案。注意,我这里用的是“管控”而不是“删除”,因为对于绝大多数用户而言,完全移除一个核心安全组件是高风险且不必要的。我们的目标应该是:在需要的时候,让Defender完全静默、停止活动;在不需要的时候,又能一键恢复,不影响系统安全性。
这篇内容,我就把自己这些年实测有效的方法,从原理到操作,从图形界面到批处理脚本,再到更深层的组策略和注册表方案,系统地梳理一遍。我会重点解释每一步操作背后的逻辑,告诉你为什么这么做,以及不同方法之间的优劣和适用场景。无论你是遇到性能瓶颈的普通用户,还是需要纯净测试环境的技术人员,都能在这里找到适合你的解决方案。
2. 理解Windows Defender:为什么它如此“顽固”
在动手之前,我们必须先搞清楚对手。Windows Defender,现在更常被称为Microsoft Defender Antivirus,早已不是当年那个孱弱的可选组件。从Windows 10开始,它深度集成于系统内核,成为了Windows安全中心的核心。它的“顽固”体现在几个层面:
2.1 核心架构与自保护机制
Defender由多个相互关联的服务和进程构成,例如MsMpEng.exe(反恶意软件服务)、NisSrv.exe(网络检查系统服务)等。微软为其设计了强大的自保护机制。如果你尝试直接结束其进程,系统会立刻将其重启。如果你试图删除其系统文件,会受到“TrustedInstaller”最高权限的保护,常规删除操作会直接失败。这种设计初衷是好的,为了防止恶意软件优先干掉杀毒软件,但也给我们管理它带来了挑战。
2.2 实时保护的自动复位
这是最让人头疼的一点。即使你通过设置页面关闭了“实时保护”,在以下几种情况下,它会自动重新开启:
- 系统重启后。
- 一段时间(通常是15分钟到几小时)后,系统检测到安全策略变更。
- 安装了某些系统更新后。 这背后的逻辑是,微软将Defender视为系统安全的最后一道底线,确保用户不会长期处于无保护状态。
2.3 与其他安全功能的耦合
Defender并非孤立运行。它与Windows防火墙、SmartScreen、内核隔离、内存完整性等安全功能紧密耦合。禁用Defender可能会影响这些关联组件的状态或引发安全中心的警告提示。
所以,我们的所有操作,都必须建立在理解这些机制的基础上。我们的目标不是“打败”系统安全,而是“协商”出一个我们拥有控制权的状态。
3. 常规图形界面关闭方法及其局限性
对于大多数临时性需求,我们可以先尝试系统自带的设置选项。这些方法简单但往往不彻底。
3.1 通过Windows安全中心临时关闭
这是最广为人知的方法。
- 点击开始菜单,输入“Windows 安全中心”并打开。
- 选择“病毒和威胁防护”。
- 在“病毒和威胁防护”设置下,点击“管理设置”。
- 关闭“实时保护”的开关。
注意:关闭后,你会看到黄色的警告提示,并且这个设置极有可能在下次重启或一段时间后自动恢复。此方法仅适用于临时运行某个被误报的程序。
3.2 禁用篡改保护
“篡改保护”是Windows 10 1903及更新版本引入的功能,旨在防止恶意应用(或我们自己)擅自更改Defender的重要设置。
- 在“病毒和威胁防护”设置页面,找到“病毒和威胁防护设置”。
- 滚动找到“篡改保护”,并将其关闭。 关闭篡改保护后,你才能通过注册表或组策略进行更深度的修改。否则,很多设置会被系统自动纠正回来。
3.3 使用“排除项”进行精准放行
如果你只是不希望Defender扫描某个特定文件夹或进程,添加排除项是最安全、最推荐的方式。
- 在“病毒和威胁防护”设置的“管理设置”页面,向下滚动找到“排除项”。
- 点击“添加或删除排除项”,然后可以添加“文件”、“文件夹”、“文件类型”或“进程”。 例如,如果你有一个
D:\MyTools目录存放所有自定义脚本,将其添加为文件夹排除项,Defender将不再扫描该目录下的任何文件。这能有效解决误报问题,且不影响整体系统安全。
局限性总结:图形界面的方法操作简单,但控制力弱,无法实现永久性或深层次的禁用。它们适合解决临时、局部的问题。当你需要Defender长期、彻底停止干预时,就必须借助更强大的工具。
4. 核心方案:使用批处理脚本进行深度管控
批处理脚本(.bat)是我们实现自动化、深度管控的利器。下面我将提供几个不同层级的脚本,并从原理上解释每一条命令的作用。
4.1 基础禁用脚本:停止服务与禁用计划任务
这个脚本的目标是停止Defender相关服务,并阻止它们随系统启动。
@echo off echo 正在获取管理员权限... >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" if '%errorlevel%' NEQ '0' ( echo 请求管理员权限... goto UACPrompt ) else ( goto gotAdmin ) :UACPrompt echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs" "%temp%\getadmin.vbs" exit /B :gotAdmin if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" ) pushd "%CD%" CD /D "%~dp0" echo 正在停止Windows Defender服务... net stop WinDefend >nul 2>&1 net stop WdNisSvc >nul 2>&1 sc config WinDefend start= disabled >nul 2>&1 sc config WdNisSvc start= disabled >nul 2>&1 echo 正在禁用Defender相关计划任务... schtasks /Change /TN "\Microsoft\Windows\Windows Defender\Windows Defender Cache Maintenance" /DISABLE >nul 2>&1 schtasks /Change /TN "\Microsoft\Windows\Windows Defender\Windows Defender Cleanup" /DISABLE >nul 2>&1 schtasks /Change /TN "\Microsoft\Windows\Windows Defender\Windows Defender Scheduled Scan" /DISABLE >nul 2>&1 schtasks /Change /TN "\Microsoft\Windows\Windows Defender\Windows Defender Verification" /DISABLE >nul 2>&1 echo 操作完成!建议重启计算机使设置完全生效。 pause脚本逐行解析:
@echo off:关闭命令回显,让输出更简洁。- 前半部分的
UACPrompt标签块:这是一个经典的自动请求管理员权限的代码。因为停止和配置系统服务需要管理员权限。 net stop:用于停止正在运行的服务。WinDefend是主服务,WdNisSvc是网络检查服务。sc config:用于配置服务。start= disabled表示将服务的启动类型设置为“禁用”,这样下次开机就不会自动启动了。schtasks /Change ... /DISABLE:用于禁用Windows Defender的定期维护、扫描、验证等计划任务。这是防止它“死灰复燃”的关键一步。
4.2 进阶管控脚本:结合组策略与注册表
对于Windows 10/11专业版、企业版或教育版,我们可以利用组策略实现更稳固的禁用。家庭版没有组策略编辑器,但可以通过直接操作注册表达到类似效果。
@echo off :: 再次进行管理员权限检查(略,同上) ... echo 正在通过组策略禁用Defender(适用于专业版及以上)... if exist "%windir%\System32\gpedit.msc" ( rem 使用reg add命令直接修改组策略对应的注册表项 reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows Defender" /v DisableAntiSpyware /t REG_DWORD /d 1 /f >nul 2>&1 reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows Defender\Real-Time Protection" /v DisableRealtimeMonitoring /t REG_DWORD /d 1 /f >nul 2>&1 reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows Defender\Spynet" /v SpyNetReporting /t REG_DWORD /d 0 /f >nul 2>&1 reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows Defender\Spynet" /v SubmitSamplesConsent /t REG_DWORD /d 2 /f >nul 2>&1 echo 组策略注册表项已设置。 ) else ( echo 未检测到组策略编辑器(可能是家庭版),将尝试其他注册表项。 ) echo 正在禁用Defender安全中心通知... reg add "HKLM\SOFTWARE\Microsoft\Windows Defender\Security Center\Notifications" /v DisableNotifications /t REG_DWORD /d 1 /f >nul 2>&1 echo 正在尝试禁用Defender的驱动级保护(需谨慎)... reg add "HKLM\SYSTEM\CurrentControlSet\Services\WdBoot" /v Start /t REG_DWORD /d 4 /f >nul 2>&1 reg add "HKLM\SYSTEM\CurrentControlSet\Services\WdFilter" /v Start /t REG_DWORD /d 4 /f >nul 2>&1 echo 正在应用更改并强制关闭Defender进程... taskkill /f /im MsMpEng.exe >nul 2>&1 taskkill /f /im NisSrv.exe >nul 2>&1 taskkill /f /im SecurityHealthSystray.exe >nul 2>&1 echo 所有操作执行完毕。**强烈建议立即重启计算机**。 echo 重启后,打开任务管理器,检查“Windows Defender Antivirus Service”等是否已停止。 pause关键注册表项说明:
DisableAntiSpyware = 1:这是历史上禁用Defender最著名的键值。在早期Win10中直接有效,但在较新版本(如2004之后)中,此键值可能被忽略,需配合其他设置。DisableRealtimeMonitoring = 1:禁用实时保护,这是核心。SpyNetReporting和SubmitSamplesConsent:关闭云提交和样本上报,减少后台通信。DisableNotifications = 1:关闭安全中心关于Defender已关闭的烦人通知。WdBoot和WdFilter的Start = 4:将驱动启动类型设置为“禁用”。这两个驱动是Defender在系统启动早期加载的过滤器驱动,用于文件系统监控。禁用它们能更深层次地阻止Defender活动。
重要警告:修改
WdBoot和WdFilter属于深度操作。不当修改可能影响系统稳定性。务必在操作前创建系统还原点或备份注册表。
5. 方案对比与选择指南
面对这么多方法,你该如何选择?下表对比了不同方案的特性:
| 方案类型 | 实现难度 | 禁用深度 | 系统影响 | 可逆性 | 适用场景 |
|---|---|---|---|---|---|
| 图形界面关闭 | 极低 | 浅层,临时 | 无 | 自动恢复 | 临时运行一个被误报的程序 |
| 添加排除项 | 低 | 精准,局部 | 无 | 极易 | 固定工作目录或工具免打扰 |
| 批处理停服务 | 中 | 中层,较持久 | 低 | 较易(手动启用服务) | 需要较长时间禁用Defender进行测试 |
| 组策略/注册表 | 中高 | 深层,持久 | 中(需谨慎操作) | 可逆(需手动恢复设置) | 专业版用户希望获得稳定禁用状态 |
| 驱动级禁用 | 高 | 极深 | 高(有风险) | 困难 | 高级用户、特定测试环境,不推荐普通用户 |
个人实操心得:
- 优先排除项:90%的“冲突”问题,通过添加文件夹或进程排除项就能完美解决。这是最安全、最优雅的方式。
- 临时用批处理:如果需要做几个小时的压力测试或演示,运行那个“基础禁用脚本”就够了。重启后一切恢复正常,不影响日常安全。
- 长期用组策略:如果你确定在未来很长一段时间(比如专注于某个可能频繁触发误报的开发项目)都不需要Defender,那么为专业版系统配置组策略是最省心的。设置一次,一劳永逸。
- 驱动级修改是最后手段:除非你非常清楚自己在做什么,并且有立即还原的能力,否则不要轻易动
WdBoot和WdFilter。我曾在一次测试中错误禁用了相关驱动,导致系统启动后一些应用程序行为异常。
6. 常见问题与排查技巧实录
即使按照步骤操作,你也可能会遇到一些意外情况。下面是我和同事们踩过的一些坑以及解决办法。
6.1 执行批处理脚本后,Defender服务依然自动重启了
- 可能原因1:篡改保护未关闭。这是最常见的原因。请务必先在Windows安全中心设置里关闭“篡改保护”,否则系统会自动修复你的更改。
- 可能原因2:第三方安全软件冲突。如果你安装了其他杀毒软件(如卡巴斯基、诺顿等),它们有时会“唤醒”Defender以进行协同扫描。尝试暂时退出第三方安全软件再执行脚本。
- 排查命令:以管理员身份打开CMD,运行
sc query WinDefend。查看“STATE”一行。如果是“RUNNING”,说明服务在运行。接着运行sc qtriggerinfo WinDefend,查看是否有其他服务或事件触发它启动。
6.2 修改注册表后,设置被系统自动还原
- 可能原因:你修改的注册表路径不对,或者权限不足。组策略相关的设置位于
HKLM\SOFTWARE\Policies\Microsoft\...,这个路径的权限优先级很高。而HKLM\SOFTWARE\Microsoft\Windows Defender\...下的部分设置可能会被系统覆盖。 - 解决方案:确保你修改的是
Policies下的键值。并以管理员身份运行注册表编辑器(regedit)。
6.3 禁用Defender后,Windows安全中心出现红色叉号警告
- 这是正常现象。安全中心检测到核心防病毒组件被关闭,自然会告警。
- 如果你不想看到这个警告,可以尝试禁用安全中心通知(脚本中已包含
DisableNotifications),但无法完全消除安全中心界面的红色状态。一个折中的办法是安装一个微软认证的、轻量级的第三方防病毒软件(即使不启用),安全中心检测到有活跃的杀软,就不会因为Defender关闭而告警了。
6.4 如何彻底验证Defender已完全停止工作?
光看服务停止还不够,可以多维度验证:
- 进程检查:打开任务管理器,在“进程”和“详细信息”标签页中,查找
MsMpEng.exe、NisSrv.exe、MsMpEngCP.exe等进程,确认它们不存在。 - 性能监控:打开资源监视器,观察“磁盘”活动。运行一个已知会被Defender扫描的大文件复制操作。如果之前复制时磁盘活动里总有“Antimalware Service Executable”,现在没有了,说明已生效。
- 文件操作测试:将一个测试用的无害破解工具或密钥生成器(可在虚拟机中准备)复制到系统盘外的某个位置。如果之前会被瞬间隔离,现在没有任何反应,则说明实时监控已关闭。
6.5 后悔了,如何一键恢复所有设置?
准备工作时就应该准备好恢复脚本。以下是一个恢复脚本的示例核心部分:
@echo off :: ... 管理员权限获取部分同上 ... echo 正在恢复Windows Defender... sc config WinDefend start= auto >nul 2>&1 sc config WdNisSvc start= auto >nul 2>&1 net start WinDefend >nul 2>&1 reg delete "HKLM\SOFTWARE\Policies\Microsoft\Windows Defender" /v DisableAntiSpyware /f >nul 2>&1 reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows Defender\Real-Time Protection" /v DisableRealtimeMonitoring /t REG_DWORD /d 0 /f >nul 2>&1 reg delete "HKLM\SYSTEM\CurrentControlSet\Services\WdBoot" /v Start /f >nul 2>&1 reg delete "HKLM\SYSTEM\CurrentControlSet\Services\WdFilter" /v Start /f >nul 2>&1 echo 正在启用计划任务... schtasks /Change /TN "\Microsoft\Windows\Windows Defender\Windows Defender Cache Maintenance" /ENABLE >nul 2>&1 ...其他任务... echo 恢复完成!请重启计算机,并前往Windows安全中心重新打开“实时保护”和“篡改保护”。 pause这个脚本将服务设为自动启动,删除或还原之前添加的注册表项,重新启用计划任务。执行后重启,Defender应能恢复正常。