用 Cursor Agent 修 Windows 系统:从安全中心被关到 WSUS 劫持的双线排查

真实复盘:Defender 策略关停 + 更新源劫持叠加,如何在长上下文里让 Agent 自主排查、证伪与沉淀脚本

通过邀请链接注册 Cursor,首月 Pro / Pro+ / Ultra 立享 5 折:

👉 立即注册(首月 5 折)
起因

不是单点故障,而是长期策略漂移

最初症状是 Windows 安全中心空白,防护与防火墙入口无法打开;但命令行防火墙规则仍在。随后又出现 Windows Update 持续失败,报错多次指向 0x800f081f

这类问题最容易走向“重装系统”,但也最容易忽略策略层被持续改写的事实。整个复盘采用的协作方式是:Agent 负责只读探测与推理链,写入动作由人工在管理员终端执行并回传结果。

这不是一步到位修复,而是两条故障线并行收敛:Defender 线负责恢复安全能力,Update 线负责恢复更新链路。
故事线 1

Defender 与安全中心被策略级关停

第一轮探测命令聚焦服务态、策略键、组策略来源和 Defender 历史威胁记录。四条命令就锁定了核心证据。

Get-Service wscsvc, mpssvc, BFE, WinDefend, WdNisSvc, SecurityHealthService
reg query "HKLM\SOFTWARE\Policies\Microsoft\Windows Defender" /s
gpresult /scope:computer /r | Select-String -Pattern "Windows Defender"
Get-MpThreatDetection | Select ThreatName, Resources, InitialDetectionTime

关键结论:DisableAntiSpyware=1VirTool:Win32/DefenderTamperingRestore 同时命中,说明 Defender 不只是“没启动”,而是长期被策略压制并反复篡改。

坑 1:PowerShell 里的 sc 别名误导

早期脚本中的 sc config 在 PowerShell 下会撞到别名,表现为看似无关的参数错误。复查后应改为 sc.exeSet-Service

Get-Command sc
Set-Service -Name WinDefend -StartupType Automatic
Set-Service -Name SecurityHealthService -StartupType Manual

这一段体现了 Agent 的价值:不是死扛旧答案,而是先验证再修正。

坑 2 + 坑 3:1058 与拒绝访问 5

1058 本质是顺序错误导致在禁用态尝试启动服务;拒绝访问 5 则是 ACL 边界问题,管理员权限不等于可改所有安全服务。

遇到安全服务配置失败时,先判定“是权限边界还是命令错误”,不要直接重复执行。

SecurityHealthService 这类受保护服务,常规管理员写入会被拒绝,需要改走更稳妥路径。

坑 4:SYSTEM 路径受阻,转注册表 ACL 方案

当 SYSTEM 方案受网络链路影响失败时,可退回注册表服务键处理。服务启动值语义如下:

Start启动类型
2自动(Automatic)
3手动(Manual)
4禁用(Disabled)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SecurityHealthService

Start 从 4 调整回 3 后,启动类型恢复,但运行态手动拉起仍可能失败。

收敛点:PPL 受保护进程要靠重启触发

SecurityHealthService 涉及受保护进程机制。实践上,修正策略和启动配置后直接重启,比在运行态反复 Start-Service 更有效。

Get-Service WinDefend, SecurityHealthService | Format-Table Name, Status, StartType -AutoSize

重启后两者同时恢复,安全中心 UI 随之恢复可用。

侧证:历史威胁记录补全证据链

Trojan:Win32/Wacatac.B!ml
Adware:Win32/Tnega
HackTool:Win32/AutoKMS
HackTool:Win32/AutoKMS!pz
VirTool:Win32/DefenderTamperingRestore
故事线 2

Windows Update 失败的双层故障定位

面对 0x800f081f,先查策略再查组件。Agent 优先读取 Windows Update 策略键,而不是直接开跑大修复。

Get-ItemProperty 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate'
Get-ItemProperty 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU'

命中 WUServerWUStatusServerUseWUServer=1 后,说明更新源已偏离默认路径。再结合 DNS 解析结果和本机进程态,补齐“策略改写 + fake-ip 拦截”的双层闭环。

若存在未知 WSUS 地址,先回退策略;否则后续 DISM/SFC 可能一直在错误源上空转。
reg delete "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" /v WUServer /f
reg delete "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" /v WUStatusServer /f
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v UseWUServer /t REG_DWORD /d 0 /f
net stop wuauserv
net stop bits
net stop cryptsvc
net stop dosvc
Rename-Item C:\Windows\SoftwareDistribution SoftwareDistribution.old -Force
Rename-Item C:\Windows\System32\catroot2 catroot2.old -Force
net start cryptsvc
net start bits
net start wuauserv
net start dosvc
DISM /Online /Cleanup-Image /RestoreHealth
sfc /scannow
沉淀工件

让 Agent 产出可复用诊断脚本

排障结束后,把探测命令固化为脚本比“记住一次答案”更有价值。脚本建议分为 Defender 线和 Update 线,两段输出并附判读提示。

# scripts/Diagnose-WindowsHealth.ps1
Get-Service wscsvc, mpssvc, BFE, WinDefend, WdNisSvc, SecurityHealthService
$policy = Get-ItemProperty 'HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender' -ErrorAction SilentlyContinue
if ($policy.DisableAntiSpyware -eq 1) { Write-Warning "DisableAntiSpyware=1" }
Get-MpThreatDetection | Where-Object { $_.ThreatName -like '*Tampering*' }

$wu = Get-ItemProperty 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate' -ErrorAction SilentlyContinue
if ($wu.WUServer) { Write-Warning "WUServer: $($wu.WUServer)" }
稳定探针先行:先让脚本给出“病历快照”,再决定是否执行有副作用的修复命令。
番外

Win11 升级评估:能装不等于该装

完成 Win10 修复后,可让 Agent 用硬件清单命令快速评估 Win11 条件。若 CPU 不在官方支持序列,建议优先保证现有系统稳定运行。

Get-ComputerInfo | Select-Object OsName, OsVersion, OsBuildNumber, BiosFirmwareType, CsTotalPhysicalMemory, CsModel
Get-CimInstance Win32_Processor | Select-Object Name, Manufacturer, NumberOfCores
Get-Tpm
Confirm-SecureBootUEFI
复盘结论

几件早知道会更省时间的事

协作方式

Agent 在这类系统排障里的真实价值

  1. 主动探测:给目标后自行收集关键证据。
  2. 自我修正:发现命令不成立时先验证再改写。
  3. 长上下文:可以回放历史步骤定位顺序性错误。
  4. 假设闭环:提出假设并补证据,不停留在单点解释。
  5. 沉淀工件:把一次会话产出为可复用脚本。
边界同样明确:它不能替代人工确认高风险写入、不能代替重启动作,也不能替你承担不可逆副作用。
给读者

四条实操建议

  1. 安全中心空白时,先查 DisableAntiSpyware 与关键服务状态。
  2. 更新失败先查 WSUS 策略键,再决定是否执行 DISM/SFC。
  3. 遇到受保护服务,不要在运行态反复强启,优先配置后重启验证。
  4. 每次排障都让 Agent 产出诊断脚本,避免下次从零开始。

通过邀请通道注册,首月 Pro 仅需 5 折。先把模型和 Agent 用起来,再逐步扩展到更复杂的系统场景。

👉 立即开通(首月 5 折)

邀请通道仅对首月生效,次月起恢复原价;可随时取消订阅。