Windows Defender 为什么关不掉?no-defender 的 3 级阶梯修复与完整排查指南
【免费下载链接】no-defenderA slightly more fun way to disable windows defender + firewall. (through the WSC api)项目地址: https://gitcode.com/GitHub_Trending/no/no-defender
no-defender 是一款基于 WSC(Windows Security Center)API 的工具,能让 Windows Defender 和防火墙以"检测到其他杀毒软件接管"的方式优雅退出,比直接改注册表、停服务更干净。读完并操作完本文,你将能够独立判断工具失效的原因,按 3 个层级逐级恢复,并在 5 分钟内用命令验证防护确实处于禁用状态。
症状对照:快速定位 no-defender 失效的场景 ⚠️
先看下面这张表,找到和你眼前状况最接近的一行,再跳到对应章节:
| 现象 | 可能原因 | 修复层级 |
|---|---|---|
终端提示no-defender-loader不是内部或外部命令 | 未加入 PATH,或下载不完整 | L1 基础环境检查 |
| 命令执行成功,但安全中心仍显示 Defender 在防护 | WSC 接管未生效,多为工具过旧或与第三方杀毒冲突 | L2 执行与验证 |
| 重启后 Defender 又回来了 | 自启动项被删除或被第三方安全软件清理 | L3 重启保持 |
| 安装第三方安全软件后行为异常 | 多个 WSC 供应商互相覆盖 | L4 冲突处理 |
30 秒自检:先确认工具能不能跑、Defender 当前什么状态。
# PowerShell:打印工具版本(能输出版本号说明工具可用) no-defender-loader --version # 查看 Defender 服务当前状态 sc.exe query WinDefend:: CMD:同上两条 no-defender-loader --version sc query WinDefend前置提醒:开始前请确认两件事。其一,以管理员身份打开终端(右键"以管理员身份运行");其二,先退出所有第三方杀毒软件,避免 WSC 供应商互相覆盖。另外记住随时可回滚:执行
no-defender-loader --disable即可重新启用 Defender 与防火墙。
对号入座,比盲目操作更能省下排查时间。
阶梯修复:从轻到重逐级尝试 🔍
按 L1 到 L4 的顺序逐级尝试,每层都有明确的通过标准,未通过再进入下一层。
L1 · 基础环境检查:确认工具可用且有管理员权限
这一层解决"命令跑不起来"的问题——权限不足或工具版本过旧占了绝大多数失败案例。
操作步骤:
- 以管理员身份打开 PowerShell 或 CMD。
- 执行版本命令,确认工具可被调用。
- 确认当前账户属于 Administrators 组。
# 打印工具版本,输出版本号即代表工具可用 no-defender-loader --version # 列出当前用户所属用户组,结果应包含 \\...\administrators whoami /groups | Select-String -Pattern "administrators" # 查看 Defender 服务当前状态(L1 只做观察,不做更改) sc.exe query WinDefend:: CMD:打印工具版本 no-defender-loader --version :: CMD:查看当前用户所属组,应包含 administrators whoami /groups | findstr /i "administrators" :: CMD:查看 Defender 服务当前状态 sc query WinDefend✅ 通过标准:--version输出版本号;组列表中能看到administrators。
⚠️风险:本层全部是只读检查,无副作用。若版本输出异常(乱码、报错),回到 L4 重新获取工具即可,无需回退。
若上一步未生效,继续往下。
L2 · 执行禁用命令:确认 WSC 接管生效
这一层是核心操作:通过 WSC API 向 Windows 宣告"已有其他杀毒软件接管",Defender 随即退位,防火墙可一并关闭。
操作步骤:
- 确认 L1 通过。
- 执行禁用命令,需要关防火墙就加上
--firewall。 - 立即查询服务状态验证结果。
- 打开安全中心,确认供应商信息已变更。
# 仅禁用 Defender(默认注册名即工具自身标识) no-defender-loader --av # 需要同时关闭防火墙时加上该参数 no-defender-loader --av --firewall # 验证:Defender 服务状态 sc.exe query WinDefend # 验证:防火墙配置(预期为 not running) netsh advfirewall show allprofiles state:: CMD:仅禁用 Defender no-defender-loader --av :: CMD:同时关闭防火墙 no-defender-loader --av --firewall :: CMD:验证 Defender 服务状态 sc query WinDefend :: CMD:验证防火墙状态 netsh advfirewall show allprofiles state✅ 通过标准:WinDefend的 STATE 为STOPPED(或启动后 10 秒内回到 STOPPED);netsh输出Firewall Protection: OFF;安全中心供应商一栏不再是 Microsoft Defender。
⚠️风险:禁用期间系统处于无防护状态。回退方法:执行
no-defender-loader --disable重新启用,然后重启一次。
特别留意:README 里--disable的说明是 "re-enable firewall/defender",即重新启用,和参数字面意思相反,别指望它"禁用得更彻底"。若仍未恢复,继续往下。
L3 · 保持重启后的禁用效果:自启动排查
Defender 有自我保护机制,重启后可能自动恢复。no-defender 通过写入自启动项,在每次开机时重新向 WSC 申报接管来维持效果,所以自启动项是这个工具的生命线。
操作步骤:
- 重启一次系统。
- 重启后立即查询 Defender 服务状态。
- 确认工具文件仍保留在磁盘原位置(自启动指向的就是它)。
- 若失效,重新执行 L2 禁用命令,并检查第三方安全软件是否清理了自启动。
# 重启完成后立即执行:查询 Defender 服务是否保持停止 sc.exe query WinDefend # 确认工具文件还在原目录(自启动指向此文件,被删则重启失效) Get-ChildItem -Path . -Filter "no-defender*":: CMD:重启后查询 Defender 服务状态 sc query WinDefend :: CMD:确认工具文件仍在原目录 dir no-defender*✅ 通过标准:重启后WinDefend仍为STOPPED,且安全中心供应商显示为第三方。
⚠️风险:自启动项会常驻系统,日后想彻底清理时,先用
--disable恢复,再删除对应启动项(工具目录及开机自启条目)。
关于工具自启动限制的完整说明,见项目文档 README.md。若仍未恢复,继续往下。
L4 · 第三方安全软件冲突处理
这一层处理"装了别的杀毒/优化工具后 no-defender 行为异常"的场景:多个软件都通过 WSC 申报供应商时,会互相覆盖,导致时灵时不灵。
操作步骤:
- 逐一卸载/退出第三方安全与系统优化工具。
- 执行
--disable恢复正常,重启一次,确认系统回到初始状态。 - 干净状态下重新执行 L2 禁用命令。
- 再次重启验证效果稳定。
# 先恢复系统默认防护 no-defender-loader --disable # 重启后重新禁用 no-defender-loader --av --firewall # 验证服务状态 sc.exe query WinDefend sc.exe query wscsvc:: CMD:先恢复系统默认防护 no-defender-loader --disable :: CMD:重启后重新禁用 no-defender-loader --av --firewall :: CMD:验证服务状态 sc query WinDefend sc query wscsvc✅ 通过标准:重启两轮后WinDefend均为STOPPED,且安全中心不再弹出"检测到威胁防护已关闭"类反复提示。
⚠️风险:卸载第三方安全软件可能删除关联配置。回退方法:执行
--disable恢复 Defender 后,再重装该安全软件。
逐层验证,别跳过任何一层直接上狠招。
操作路线图
把上面的四个层级连起来,完整决策路径如下:
开始(管理员终端) │ ├─ L1 版本 + 权限检查 │ ├─ 通过 → 进入 L2 │ └─ 失败 → 重新获取工具 / 换管理员账户,回到 L1 │ ├─ L2 执行禁用 --av [--firewall] │ ├─ 通过(WinDefend STOPPED + 防火墙 OFF)→ 进入 L3 │ └─ 失败 → 进入 L4 排查冲突 │ ├─ L3 重启验证 │ ├─ 通过(重启后仍禁用)→ 结束 ✅ │ └─ 失败(Defender 复活)→ 检查自启动项 → 回到 L2 │ └─ L4 第三方冲突处理 ├─ 通过(连续两轮重启稳定)→ 结束 ✅ └─ 失败 → 执行 --disable 还原,卸载冲突软件后重来不同环境的适配差异:
- Windows 11:Defender 服务恢复机制更积极,L2 执行后应立即验证,不要隔几分钟再看。
- 系统还原/安全模式启动后:自启动可能未生效,需要重新执行一次 L2。
- 工具目录被移动/清理:自启动指向旧路径导致静默失败,把工具放回原处或重新执行 L2。
沿着图走,每个分支都有出口,不会卡死。
验收清单 📋
下面 4 条命令可以直接复制执行,全部满足才算禁用成功:
# 1. 验收 Defender 服务状态(预期 STOPPED) sc.exe query WinDefend # 2. 验收防火墙状态(预期 OFF) netsh advfirewall show allprofiles state # 3. 验收 WSC 服务仍在运行(WSC 本身不该被停掉) sc.exe query wscsvc # 4. 验收工具可恢复(预期输出版本号,证明回滚通道可用) no-defender-loader --version| 检查项 | 命令 | 预期输出 | 不通过时跳转 |
|---|---|---|---|
| Defender 已停止 | sc.exe query WinDefend | STATE : 4 STOPPED | L2 执行与验证 |
| 防火墙已关闭 | netsh advfirewall show allprofiles state | Firewall Protection: OFF | L2 执行与验证 |
| WSC 服务正常 | sc.exe query wscsvc | STATE : 4 RUNNING | L4 冲突处理 |
| 重启后仍生效 | 重启后重跑第 1 条 | STATE : 4 STOPPED | L3 重启保持 |
验收开始 │ ├─ WinDefend = STOPPED ? │ ├─ 是 → 防火墙 = OFF ? │ │ ├─ 是 → WSC = RUNNING ? │ │ │ ├─ 是 → 重启后复查第 1 条 │ │ │ │ ├─ 是 → 验收通过 ✅ │ │ │ │ └─ 否 → 回到 L4 │ │ │ └─ 否 → 回到 L4 │ │ └─ 否 → 回到 L2 │ └─ 否 → 回到 L2四条命令全绿,才算真正验收通过。
长效维护
把下面的脚本保存为watch-defender.ps1,它会周期性记录 Defender 与防火墙状态,方便你观察禁用效果是否稳定、还原后是否真正回来了。
# watch-defender.ps1 —— Defender/防火墙状态巡检脚本 # 用法:powershell -ExecutionPolicy Bypass -File watch-defender.ps1 $logPath = Join-Path $env:USERPROFILE "no-defender-watch.log" function Write-Status { param([string]$Name, [string]$State) $line = "{0} {1} {2}" -f (Get-Date -Format "yyyy-MM-dd HH:mm:ss"), $Name, $State Add-Content -Path $logPath -Value $line Write-Host $line } # 检查 Defender 服务状态 try { $def = (Get-CimInstance Win32_Service -Filter "Name='WinDefend'").State Write-Status "WinDefend" $def } catch { Write-Status "WinDefend" "QUERY_ERROR" } # 检查 WSC 服务状态 try { $wsc = (Get-CimInstance Win32_Service -Filter "Name='wscsvc'").State Write-Status "wscsvc" $wsc } catch { Write-Status "wscsvc" "QUERY_ERROR" } # 检查防火墙状态并记录 OFF/ON $fwState = (netsh advfirewall show allprofiles state | Select-String "Firewall Protection").ToString().Trim() Write-Status "Firewall" $fwState周期性检查计划:
| 频率 | 检查项 | 命令 |
|---|---|---|
| 每次大更新/补丁安装后 | Defender 是否复活 | sc.exe query WinDefend |
| 每周 | 巡检日志有无状态突变 | 查看%USERPROFILE%\no-defender-watch.log |
| 决定恢复防护前 | 导出当前服务配置留底 | sc.exe qc WinDefend > "$env:USERPROFILE\WinDefend-before-restore.txt" |
| 决定恢复防护前 | 导出防火墙配置留底 | netsh advfirewall export "%USERPROFILE%\fw-backup.xml" all |
记住一个原则:改任何东西之前,先把现状导出成一份文件。
真实案例复盘 🧪
案例一:命令执行后无任何输出
现象:终端执行no-defender-loader --av后无反应,Defender 状态不变。
排查路径:
- 执行
--version,输出版本明显旧于近期 Windows 更新节奏。 - 查看事件日志,发现 Defender 每次被停用后数秒内又被拉起。
- 怀疑旧版工具的 WSC 注册名与新版 Windows 的识别逻辑不匹配。
- 更换到最新版本重新执行。
# 升级后重新执行 no-defender-loader --version no-defender-loader --av sc.exe query WinDefend一句话结论:工具版本落后于系统更新时,先升级工具再谈其他。
案例二:禁用成功但重启全部失效
现象:当天禁用完全正常,第二天开机 Defender 满血复活。
排查路径:
- 重启后查询服务,确认
WinDefend已恢复RUNNING。 - 检查工具目录,发现一个第三方安全工具在扫描日志中记录过"清理可疑自启动项"。
- 确认 no-defender 的自启动条目已被该工具移除。
- 关闭该安全工具后重新执行禁用命令。
:: 关闭冲突安全工具后重新禁用 no-defender-loader --av :: 重启后复查 sc query WinDefend一句话结论:第三方安全软件清理自启动项,是重启失效的头号原因。
案例三:想用--disable收场却把系统搞反了
现象:用户想恢复 Defender,执行--disable后 Defender 反而被再次禁用。
排查路径:
- 复现操作,确认
--disable执行后WinDefend变为STOPPED。 - 查阅 README.md 参数说明,发现
--disable的描述是 "re-enable firewall/defender" 的反向用法被误读为"禁用"。 - 对照参数列表,确认
--av才是禁用入口。 - 按正确参数顺序先
--disable恢复,再按需执行禁用。
# 正确操作顺序 no-defender-loader --disable # 恢复 Defender 与防火墙 no-defender-loader --av # 需要时再禁用一句话结论:--disable是恢复开关,参数名和实际方向不一致,用前先读帮助。
复盘的价值在于把下一次踩坑的时间压到最短。
速查附录
常见错误与问题速查表:
| 代码/现象 | 含义 | 修复方向 | 关联章节 |
|---|---|---|---|
0x80070422 | 服务未启动 | 确认是"被禁用"还是"被停止",别误操作启动 | 症状对照 |
0x80070005 | 权限不足 | 管理员终端重跑 | L1 基础环境检查 |
| 防火墙启动失败 | 被 WSC 声明禁用中 | 属预期行为,--disable恢复 | L2 执行与验证 |
| 执行无反应 | 版本过旧或冲突 | 换最新版 + 关闭第三方杀毒 | L4 冲突处理 |
| 重启后复活 | 自启动项丢失 | 检查工具文件与自启动 | L3 重启保持 |
常用命令收藏:
# ---- 工具基础 ---- no-defender-loader --version # 查版本 no-defender-loader --help # 查帮助 # ---- 禁用与恢复 ---- no-defender-loader --av # 禁用 Defender no-defender-loader --av --firewall # 禁用 Defender + 防火墙 no-defender-loader --disable # 恢复 Defender 与防火墙(注意方向) # ---- 状态验证 ---- sc.exe query WinDefend # Defender 服务状态 sc.exe query wscsvc # WSC 服务状态 netsh advfirewall show allprofiles state # 防火墙状态收藏这张表,出问题时照着敲就不会慌。
【免费下载链接】no-defenderA slightly more fun way to disable windows defender + firewall. (through the WSC api)项目地址: https://gitcode.com/GitHub_Trending/no/no-defender
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考