发生日期:2026-11-09
主机:Windows 10(14393 / 1607),本地管理员账户
故障等级:高(每次登录必弹错误框,Defender 实时保护被关闭,安全中心无杀毒产品)
修复结果:✅ 已彻底修复并验证通过

一、结论速览

项目内容
报错Microsoft Security Client — An error has occurred in the program during initialization. Error code: 0x80070002
直接原因C:\Program Files\Windows Defender\EppManifest.dll 等 16 个 Defender 文件被删除,MSASCuiL.exe 初始化时读不到产品资源清单
根本原因360 安全卫士卸载程序定向清理了 Windows Defender 的安装目录(只删主文件,留下 zh-CN\*.mui 语言包),并留下一条关闭实时保护的组策略
修复手段① 删除 360 残留组策略 → ② sfc /scannow 从组件存储还原全部缺失文件 → ③ 重启让 Defender 重新注册到安全中心
耗时排查约 40 分钟(含 10 分 49 秒的 sfc 扫描)
是否可复现是。任何"装过 360 安全卫士又卸载"的 Windows 10 机器都可能命中

二、故障现象

2.1 用户看到的现象

卸载 360 安全卫士 → 重启 → 每次登录桌面都弹出错误对话框:

0x80070002 错误弹窗

图 1:故障弹窗原文 —— 标题 Microsoft Security Client,正文 "An error has occurred in the program during initialization. If this problem continues, please contact your system administrator.",错误码 Error code: 0x80070002

2.2 后台同时存在的隐性故障

弹窗只是冰山一角,实际上还有两个更严重的问题:

隐性问题表现
实时保护被关闭Defender 服务在跑,但 RealTimeProtectionEnabled = False,等于裸奔
安全中心不认 Defenderroot\SecurityCenter2 三类产品全部为 0 条 → Windows 安全中心显示"无防病毒软件",且 wscsvc 每 10 秒往 Application 日志刷一条错误

Application 日志刷屏原文:

SecurityCenter | 事件 ID 16 | 将 Windows Defender 状态更新为 SECURITY_PRODUCT_STATE_OFF 时出错(错误 02000000)。

2.3 错误码释义

0x80070002 = ERROR_FILE_NOT_FOUND(系统找不到指定的文件)。

在"软件卸载后重启报此错"的场景中,99% 是残留的自启项/服务指向了已被删除的文件。但本例最终证明,这里的方向被误导了 —— 指向的文件(MSASCuiL.exe)好端端地在,缺的是它依赖的资源文件。


三、排查过程(含三次方向纠偏)

排查分五个阶段,其中前两个方向都是错的,记录下来供参考。

阶段 1:怀疑 360 残留自启项 —— ❌ 排除

假设:HKLM\...\Run 或计划任务里还挂着指向已删除 360 文件的启动命令。

做法:清点服务、驱动、启动项、计划任务、Run 注册表。

结果:找到的 360 残留项全部指向仍然存在的文件,不会产生 0x80070002:

残留位置内容文件是否有效
HKCU\...\Runqprvstart → AppData\Roaming\360FileBrowser\360QuickPreview.exe存在
HKCU\...\Runsesvc → AppData\Roaming\360se6\...\sesvc.exe存在
计划任务360ZipUpdater、360ZipUpdaterLoop存在
目录C:\Program Files (x86)\360\360zip存在

结论:"360 残留文件找不到"这条假设不成立,方向要换。


阶段 2:抓弹窗本体,确认报错者是谁 —— ✅ 关键突破

问题:事件日志里翻遍 System / Application 都没有 80070002 记录 —— 因为 MSASCuiL 是 GUI 程序,弹的是 MessageBox,不走事件日志。

做法:写了一个零依赖的纯 ctypes + GDI 截图脚本(shot_popup.py),枚举所有顶层窗口 + PrintWindow 逐窗口截图。

结果:锁定弹窗进程:

属性值
窗口标题Microsoft Security Client
进程C:\Program Files\Windows Defender\MSASCuiL.exe
PID9652
弹窗内容An error has occurred in the program during initialization
错误码0x80070002

结论:报错者是 Windows Defender 的托盘 UI 程序,不是 360 的残留。排查方向转向 Defender 本身。


阶段 3:Defender 状态体检 —— 发现第 1 个根因(组策略)

做法:查服务状态、MSFT_MpComputerStatus、组策略注册表、SecurityCenter2 注册表。

结果:

检查项实测值判断
WinDefend 服务Running / Automatic✅ 服务正常
wscsvc 服务Running / Automatic✅ 服务正常
RealTimeProtectionEnabledFalse❌ 被关了
BehaviorMonitorEnabledFalse❌ 被关了
IoavProtectionEnabledFalse❌ 被关了
HKLM\SOFTWARE\Policies\Microsoft\Windows Defender\Real-Time Protection\DisableRealtimeMonitoring= 1❌ 360 留下的关闭开关
root\SecurityCenter2 AntiVirusProduct0 条❌ Defender 未注册
MSASCuiL.exe存在 / 签名有效 / 版本 4.10.14393.1198✅ 本体没坏

处置:删除 DisableRealtimeMonitoring(备份为 backup-DefenderPolicy.reg)+ Set-MpPreference 重新开启 + 重启 wscsvc。

效果:RTP / AV / Behavior / Ioav 立即全部变回 True,安全中心刷屏停止。

但这并没有解决弹窗 —— 说明还有更深一层。


阶段 4:文件级清点 —— 发现第 2 个根因(文件被删)

做法:直接数 C:\Program Files\Windows Defender\ 里的文件,并与 zh-CN 子目录对照。

结果:发现一个高度异常的模式 —— 主文件被删,语言包留着:

应有文件状态遗留的对照物作用
EppManifest.dll❌ 缺失zh-CN\EppManifest.dll.mui 还在产品图标/名称资源清单
MsMpResL.dll❌ 缺失zh-CN\MsMpResL.dll.mui 还在Defender 资源库
MpEvMsg.dll❌ 缺失zh-CN\MpEvMsg.dll.mui 还在事件消息资源

EppManifest.dll 是注册表 ProductIcon / ProductLocalizedName 指向的目标。MSASCuiL 启动 → 读这个 DLL 拿图标和产品名 → 文件不存在 → 正好是 0x80070002。根因闭环。

结论:这是定向清理特征。正常卸载不会同时删掉三个主 DLL 却精确保留 zh-CN 语言包,只有"顺手把对手清掉"的卸载程序会这么干。


阶段 5:试图手动复制回 DLL —— ❌ 被 WRP 挡住

做法:在 C:\Windows\WinSxS 里定位到官方备份,尝试用管理员权限复制回去。

DLLWinSxS 备份路径版本
EppManifest.dllamd64_windows-defender-branding_31bf3856ad364e35_10.0.14393.0_none_a8475594c048fd8d\4.10.14393.0
MsMpResL.dllamd64 包4.10.14393.0
MpEvMsg.dllamd64 包4.10.14393.0

结果:三种方式全部失败:

方式结果
Copy-Item(64 位管理员)拒绝访问
takeown /f + icacls /grant拒绝访问
.NET [System.IO.File]::Copy拒绝访问 / 文件未找到

原因:C:\Program Files\Windows Defender 是 WRP(Windows Resource Protection)保护目录,属主是 NT SERVICE\TrustedInstaller。即使拿到完整管理员权限也写不进去,只有 TrustedInstaller 服务本身(即 sfc / Windows Update)能修改。

⚠️ 顺带踩到一个坑:第一次用 Win+X 打开的管理员 PowerShell 是 32 位(x86),标题栏带 (x86)。32 位进程访问 C:\Program Files\... 会被 WOW64 重定向到 C:\Program Files (x86)\...,于是报"未能找到文件",还会让人误以为"文件真的不存在"。跑系统级脚本必须显式走 64 位 C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe。

阶段 6:sfc /scannow 从组件存储还原 —— ✅ 修复成功

做法:以 TrustedInstaller 身份运行的 sfc /scannow,从 WinSxS 组件存储还原被删文件。

执行:08:17 启动 → 08:28:32 结束,耗时 10 分 49 秒,退出码 0。

CBS 日志实锤(C:\Windows\Logs\CBS\CBS.log):

[SR] Repairing corrupted file \??\C:\Program Files\Windows Defender\MpEvMsg.dll from store
[SR] Repairing corrupted file \??\C:\Program Files\Windows Defender\Defendericon.png from store
[SR] Repairing corrupted file \??\C:\Program Files\Windows Defender\ThirdPartyNotices.txt from store
[SR] Repairing corrupted file \??\C:\Program Files\Windows Defender\ProtectionManagement_Uninstall.mof from store
[SR] Repairing corrupted file \??\C:\Program Files\Windows Defender\ProtectionManagement.mof from store
[SR] Repairing corrupted file \??\C:\Program Files\Windows Defender\EppManifest.dll from store
[SR] Repairing corrupted file \??\C:\Program Files\Windows Defender\ClientWMIInstall.mof from store
[SR] Repairing corrupted file \??\C:\Program Files\Windows Defender\FepUnregister.mof from store
[SR] Repairing corrupted file \??\C:\Program Files\Windows Defender\AmMonitoringInstall.mof from store
[SR] Repairing corrupted file \??\C:\Program Files\Windows Defender\AmStatusInstall.mof from store
[SR] Repairing corrupted file \??\C:\Program Files\Windows Defender\MsMpResL.dll from store
[SR] Repairing corrupted file \??\C:\Program Files\Windows Defender\DbgHelp.dll from store
[SR] Repairing corrupted file \??\C:\Program Files\Windows Defender\SymSrv.dll from store
[SR] Repairing corrupted file \??\C:\Program Files\Windows Defender\SymSrv.yes from store
[SR] Repairing corrupted file \??\C:\Program Files (x86)\Windows Defender\EppManifest.dll from store
[SR] Repairing corrupted file \??\C:\Program Files\Windows Defender Advanced Threat Protection\SenseCncPS.dll from store
[SR] Repair complete

这次日志揭示了第 3 个根因 —— 被删的不止 3 个 DLL,还包括一批 .mof 文件:

ProtectionManagement.mof
ProtectionManagement_Uninstall.mof
ClientWMIInstall.mof
FepUnregister.mof
AmMonitoringInstall.mof
AmStatusInstall.mof

.mof 是 WMI 注册脚本。Defender 靠这些脚本把自己的状态类注册进 WMI(root\SecurityCenter2)。文件没了 → Defender 无法向安全中心注册 → 安全中心"无杀毒软件" + 每 10 秒刷 STATE_OFF 报错。这一层是 sfc 顺手修好的,也是重启后注册成功的前提。


阶段 7:重启 + 最终验证 —— ✅ 全部通过

重启后(开机 8 分钟时采集):

检查项结果判定
开机以来 80070002 事件出现次数0✅
SecurityCenter2 / AntiVirusProduct1 条 Windows Defender,productState=397568(0x00061100 / 开启)✅ 注册成功
SecurityCenter2 / AntiSpywareProduct1 条 Windows Defender✅
MSASCuiL 进程pid=9792,MainWindowTitle=""、MainWindowHandle=0✅ 正常托盘态,无弹窗
实时保护 / AV / 行为监控 / IoavTrue / True / True / True✅
病毒库 / 引擎1.463.186.0 / 1.1.26100.4✅ 已自动更新
威胁查询接口 Get-MpThreatDetection正常响应(0 条)✅ 引擎可服务

修复后的核心验证数据(实时保护四项全 True / 安全中心已注册 / 80070002 计数为 0):

修复后验证结果

图 2:重启后执行的四项验证命令及其输出。RealTimeProtectionEnabled 等四项全部 True;SecurityCenter2 中已存在 Windows Defender(productState=397568);MSASCuiL 的 MainWindowTitle 为空、MainWindowHandle 为 0(正常托盘状态,不再弹窗);开机以来 80070002 事件计数为 0。


四、根因总结(三层叠加)

┌─────────────────────────────────────────────────────────────┐
│ 第 1 层(表象):MSASCuiL.exe 初始化失败 → 弹窗 0x80070002    │
├─────────────────────────────────────────────────────────────┤
│ 第 2 层(文件):Defender 目录 16 个文件被删                   │
│   · 3 个主 DLL(EppManifest / MsMpResL / MpEvMsg)           │
│   · 6 个 .mof WMI 注册脚本  ← 导致安全中心为空               │
│   · 图标/协议/调试符号等辅助文件                              │
│   · 特征:只删主文件,精确保留 zh-CN\*.mui 语言包             │
├─────────────────────────────────────────────────────────────┤
│ 第 3 层(策略):360 残留组策略                               │
│   DisableRealtimeMonitoring = 1  → Defender 实时保护被关闭    │
└─────────────────────────────────────────────────────────────┘

一句话:360 卸载程序同时做了两件事 —— 删掉 Defender 的文件(让它起不来)和留下关闭策略(让它即使起来也不干活)。而所有 360 自己的痕迹(浏览器、压缩、文件预览)都完好保留。


五、可复现的修复步骤

适用于:Windows 10 卸载 360 / 其他第三方杀软后,Defender 报 0x80070002 或安全中心无产品。

步骤 0:确认报错者(不要盲目动手)

# 查弹窗进程
Get-Process | Where-Object { $_.MainWindowTitle } | Select-Object ProcessName,Id,MainWindowTitle

若进程是 C:\Program Files\Windows Defender\MSASCuiL.exe → 继续下面步骤。

步骤 1:备份并删除 360 残留策略

必须以 64 位管理员身份运行(Win+X → 终端(管理员) → 先验证 ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole('Administrators') 返回 True)。

# 备份
reg export "HKLM\SOFTWARE\Policies\Microsoft\Windows Defender" "$env:USERPROFILE\Desktop\backup-DefenderPolicy.reg" /y

# 删除 360 留下的关闭开关
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender\Real-Time Protection" `
    -Name "DisableRealtimeMonitoring" -Force -ErrorAction SilentlyContinue

# 立即恢复实时保护
Set-MpPreference -DisableRealtimeMonitoring $false
Set-MpPreference -DisableBehaviorMonitoring $false
Set-MpPreference -DisableIOAVProtection $false

# 重启安全中心服务,让它重新读状态
Restart-Service wscsvc -Force

步骤 2:sfc /scannow 还原被删文件(关键步骤)

sfc /scannow
要点说明
耗时10–20 分钟,中途不要关窗口、不要中断
窗口无输出正常。sfc 的进度写日志不写屏,看起来像卡住
退出码0 = 成功
无法手动复制C:\Program Files\Windows Defender 是 WRP 目录,管理员也写不进,只能靠 sfc

执行后核对 CBS 日志:

Get-Content "$env:windir\Logs\CBS\CBS.log" -Tail 3000 |
    Select-String -Pattern 'Repairing corrupted file|Repair complete'

应能看到 Repairing corrupted file \??\C:\Program Files\Windows Defender\EppManifest.dll from store 等条目,最后以 [SR] Repair complete 收尾。

步骤 3:重启系统(不可省略)

重启是必要步骤,不是可选项。原因:

  • .mof 文件修复后,需要 WMI 服务重新加载才能把 Defender 注册进 root\SecurityCenter2
  • 只重启 wscsvc 不足以让 mof 生效(实测:重启前 SC2 一直为空,重启后立刻有 1 条)

步骤 4:验证

Write-Host "=== 实时保护 ==="
Get-CimInstance -Namespace root\Microsoft\Windows\Defender -ClassName MSFT_MpComputerStatus |
    Select-Object RealTimeProtectionEnabled,AntivirusEnabled,BehaviorMonitorEnabled,IoavProtectionEnabled

Write-Host "=== 安全中心注册 ==="
Get-CimInstance -Namespace root\SecurityCenter2 -ClassName AntiVirusProduct |
    Select-Object displayName,productState

Write-Host "=== 弹窗进程(应为空标题、句柄 0)==="
Get-Process MSASCuiL | Select-Object Id,MainWindowTitle,MainWindowHandle

Write-Host "=== 是否还有 80070002 ==="
$boot = (Get-CimInstance Win32_OperatingSystem).LastBootUpTime
(Get-WinEvent -FilterHashtable @{LogName='Application','System';StartTime=$boot} -ErrorAction SilentlyContinue |
    Where-Object { $_.Message -match '80070002' } | Measure-Object).Count

期望结果:全 True / Windows Defender 1 条 / 标题空句柄 0 / 0。


六、踩坑记录(值得存下来的教训)

#坑真相
1事件日志里查不到 80070002GUI 程序的 MessageBox 不进事件日志,必须抓窗口或截图
2以为 360 残留自启项指向了不存在的文件残留项全指向有效文件;真正缺的是 Defender 自己依赖的资源
3用 takeown + icacls 抢权限复制 DLLWRP 保护目录,属主 TrustedInstaller,管理员也写不进。只能 sfc / DISM
4Win+X → PowerShell(管理员) 复制报"文件未找到"那是 32 位 PowerShell(标题带 x86),访问 Program Files 被 WOW64 重定向到 Program Files (x86)。必须走 64 位
5删了策略、开了实时保护,弹窗还在策略只是第 3 层根因,弹窗来自第 2 层(文件被删)。两层都要修
6修完文件、重启 wscsvc,SC2 仍然为空.mof 未重新加载,必须重启系统
7sfc 窗口里没进度条,以为卡死sfc 不往窗口打进度,纯看日志。这次跑了 10 分 49 秒
8诊断脚本输出写 UTF-16,直接读全是乱码sfc 用 > 重定向是 UTF-16LE;用 Get-Content -Encoding Unicode 读

七、回滚方案

改动只有一个注册表值,且已备份:

备份文件位置回滚方式
backup-DefenderPolicy.reg工作区 / 桌面双击导入即可恢复 DisableRealtimeMonitoring=1
注意:回滚策略会让 Defender 实时保护重新关闭,一般不建议回滚。

八、遗留项(不影响系统,可选处理)

8.1 360 残留(非安全卫士本体)

路径全都有效,不会报错,只是开机多几个进程:

位置内容建议
HKCU\...\Run → qprvstart360 文件浏览器快速预览 360QuickPreview.exe不用就删自启
HKCU\...\Run → sesvc360 安全浏览器服务 sesvc.exe还在用 360 浏览器则保留
计划任务 360ZipUpdater / 360ZipUpdaterLoop360 压缩更新任务保留
C:\Program Files (x86)\360\360zip360 压缩本体保留
%APPDATA%\360Safe空壳目录可删

8.2 SecurityCenter 事件 ID 16(已大幅缓解)

修复后仍会在开机时出现 1–2 条:

将 Windows Defender 状态更新为 SECURITY_PRODUCT_STATE_ON 时出错(错误 02000000)

注意方向已从 STATE_OFF 变成 STATE_ON,且不再每 10 秒刷屏。这是 1607 版 wscsvc 的已知偶发噪音,无害。

8.3 其他无关报错

System 日志中的以下条目与本次故障无关,是长期存在的老问题:

  • DistributedCOM 10016(COM 权限)
  • Service Control Manager 7016(RaAutoInstSrv_RT2870 USB 无线网卡驱动服务)
  • Service Control Manager 7001(SSDPSRV 依赖 upnphost 未启动)

九、给"以后还要卸载安全软件"的建议

  1. 卸载前先记下 Defender 状态:Get-MpComputerStatus | Select RealTimeProtectionEnabled、Get-CimInstance -Namespace root\SecurityCenter2 -ClassName AntiVirusProduct。有基线才好对比。
  2. 卸载后立刻跑一次 sfc /scannow,别等重启报错才查。第三方杀软删对手文件是行业惯例,不限于 360。
  3. 卸载后检查组策略:HKLM\SOFTWARE\Policies\Microsoft\Windows Defender\ 下有没有 DisableAntiSpyware / DisableRealtimeMonitoring 残留值。
  4. 修完必须重启,否则 WMI 注册(.mof)不生效,安全中心会一直显示"无杀毒软件"。
  5. 别指望手动复制系统文件:WRP 目录只有 TrustedInstaller 能写。

附录 A:本次诊断产物清单

全部位于本次诊断的工作目录(脚本中统一用 $dir 变量指向,换机器只需改这一处):

文件说明
diag-360.txt首轮体检:服务/驱动/启动项/计划任务/Run 键
diag-defender.txtDefender 状态、组策略、SC2、文件清单
diag-defender2.txtWinSxS 备份定位、WMI 状态、CBS 匹配
diag-defender3.txt目录 ACL、32 位陷阱确认
dll-sources.txt三个 DLL 的 WinSxS 备份路径
/uploads/20261109/01/popup-0x80070002.png故障弹窗(由 popup-02-9652.bmp 转出)
/uploads/20261109/01/verify-result.png修复后验证输出(脱敏,无桌面信息)
sfc-output.txtsfc 原始输出(UTF-16LE)
verify-after-reboot.txt重启后最终验证数据(82 行)
verify-defender.txt重启前验证数据
backup-DefenderPolicy.reg组策略回滚备份
shot_popup.py零依赖截图脚本(ctypes + GDI + PrintWindow)
check-after-reboot.ps1重启后核查脚本
fix-defender.ps1 / fix-defender2.ps1 / fix-defender3.ps1三个修复尝试(前两个因权限/位数失败)
run-sfc.ps1sfc 执行包装脚本

附录 B:关键数据对照表

项目修复前修复后
Microsoft Security Client 弹窗每次登录必弹无
80070002 事件数—0
RealTimeProtectionEnabledFalseTrue
BehaviorMonitorEnabledFalseTrue
IoavProtectionEnabledFalseTrue
DisableRealtimeMonitoring 策略1已删除
SC2 AntiVirusProduct0 条1 条(Windows Defender)
SC2 productState—397568(0x61100,开启)
SecurityCenter 报错频率每 10 秒 1 条开机 1–2 条即停
Defender 目录缺失文件≥16 个0(已全部还原)
病毒库版本—1.463.186.0
引擎版本—1.1.26100.4

文档生成时间:2026-11-09 08:48 · 依据:diag-*.txt、sfc-output.txt、CBS.log、verify-after-reboot.txt 实测数据 · 配图已脱敏

标签: 360, windows, defender, 安全卫士

添加新评论