三、问题描述(Problem Statement)
mpssvc(Windows Defender Firewall)无法启动。
- 每次开机自动启动失败,手动
sc start mpssvc 也失败
- 服务进入
START_PENDING 后终止
- 系统事件日志 Event ID 7024,服务特定错误为
Access is denied.
- 已复现数十次(每次开机 + 每次手动尝试)
事件原文(中文系统):
事件 ID 7024,来源 Service Control Manager
Windows Defender Firewall 服务由于下列服务特定错误而终止: Access is denied.
(另有一条相同事件把服务名写作 mpssvc)
连带影响:
- Windows 防火墙完全失效
netsh advfirewall show allprofiles state →
An error occurred while attempting to contact the Windows Defender Firewall service.
- Internet 连接共享 (ICS) 无法启用
调用
INetSharingConfiguration::EnableSharing 恒返回
HRESULT 0x80040201("An event was unable to invoke any of the subscribers")。
推测原因:ICS 在启用共享时必须由防火墙服务创建共享规则,而该服务不可用。
- 移动热点不可用
热点 AP 正常建立(
192.168.137.1 已分配给 Wi-Fi Direct 虚拟适配器),
但 192.168.137.1:67 上没有 DHCP 监听,客户端无法获取 IP。
四、关键证据(Key Evidence)
4.1 服务配置
sc qc mpssvc
TYPE : 20 WIN32_SHARE_PROCESS
START_TYPE : 2 AUTO_START
BINARY_PATH_NAME : C:\Windows\system32\svchost.exe -k LocalServiceNoNetworkFirewall -p
LOAD_ORDER_GROUP : NetworkProvider
DISPLAY_NAME : Windows Defender Firewall
DEPENDENCIES : mpsdrv
bfe
SERVICE_START_NAME : NT Authority\LocalService
sc qsidtype mpssvc -> SERVICE_SID_TYPE: RESTRICTED (后被我改为 UNRESTRICTED,无改善)
sc qprivs mpssvc -> SeAssignPrimaryTokenPrivilege, SeAuditPrivilege, SeChangeNotifyPrivilege,
SeCreateGlobalPrivilege, SeImpersonatePrivilege, SeIncreaseQuotaPrivilege
4.2 注册表
HKLM\SYSTEM\CurrentControlSet\Services\mpssvc
DependOnService = mpsdrv,bfe
Description = @%SystemRoot%\system32\FirewallAPI.dll,-23091
DisplayName = @%SystemRoot%\system32\FirewallAPI.dll,-23090
ErrorControl = 1
FailureActions = <binary, 44 bytes>
Group = NetworkProvider
ImagePath = C:\Windows\system32\svchost.exe -k LocalServiceNoNetworkFirewall -p
ObjectName = NT Authority\LocalService
RequiredPrivileges = SeAssignPrimaryTokenPrivilege,SeAuditPrivilege,SeChangeNotifyPrivilege,
SeCreateGlobalPrivilege,SeImpersonatePrivilege,SeIncreaseQuotaPrivilege
ServiceSidType = 3
Start = 2
SvcHostSplitDisable = 1
SvcMemHardLimitInMB = 27
SvcMemMidLimitInMB = 20
SvcMemSoftLimitInMB = 12
Type = 32
子键 Parameters:
ServiceDll = C:\Windows\system32\mpssvc.dll
ServiceDllUnloadOnStop = 1
4.3 ⭐ 核心异常:服务安全描述符被"加固"
修复前 sc sdshow mpssvc 返回:
D:(A;;CCLCLORC;;;AU)(A;;CCDCLCSWRPLORCWDWO;;;SY)(A;;CCLCSWRPLORCWDWO;;;BA)(A;;CCLCLO;;;BU)
S:(AU;FA;CCDCLCSWRPWPDTLOSDRCWDWO;;;WD)
解码后关键点:BA(Administrators)的权限位为 CCLCSWRPLORCWDWO,不含 DC
(SERVICE_CHANGE_CONFIG)。这导致:
sc config mpssvc start= auto -> [SC] OpenService FAILED 5: Access is denied.
Set-Service mpssvc -StartupType Automatic -> Access is denied
即管理员无法配置该系统服务。此 SDDL 形态与 CIS/等保类安全基线加固后的服务 ACL 一致
(同机 bfe 的 SDDL 亦为同一加固形态)。
用 sc sdset 换成带 DC 的旧版 SDDL 后:
sc sdset -> [SC] SetServiceObjectSecurity SUCCESS
sc config mpssvc start= auto -> [SC] ChangeServiceConfig SUCCESS
sc sidtype mpssvc unrestricted -> [SC] ChangeServiceConfig2 SUCCESS
→ 服务配置权限问题已解决,但 mpssvc 仍然以 Access is denied 终止。
随后我进一步把 SD 改为给 LocalService (LS) 与 NT SERVICE\mpssvc 授予服务对象完全控制(含 DC),
sc sdset 成功,服务依旧 Access is denied。
结论:该失败并非服务权限/配置层面问题。
4.4 其他环境异常
-
C:\Windows\System32\LogFiles\Firewall 目录原本不存在
(防火墙日志目录,正常系统应存在;疑似被清理/优化工具删除)。
已重建并授予 SYSTEM/Administrators/LOCAL SERVICE 完全控制 → 无改善。
- 同机曾存在多个第三方 WFP 驱动,现均已禁用(Start=4):
hrwfpdrv / nfwfp / sysdiag(火绒 Huorong,已卸载)、
miobles_wfp(WinpkFilter, "Junchang")、idmwfp(Internet Download Manager)、
savitar2_wfp("Proxy Network" v1.6.1.7)。
- 已重置 BFE 的 WFP 持久化存储(
HKLM\SYSTEM\CurrentControlSet\Services\BFE\Parameters\Policy\Persistent)。
4.5 相关组件状态(均正常)
BFE Running Automatic
mpsdrv Running (Start=3)
wfplwfs Start=0 存在
SharedAccess Running Manual
icssvc Running Manual
SharedAccess 进程中 ipnathlp.dll 加载正常(ICS 引擎本身可用)。
4.6 ⭐⭐ 关键证据:netsh wfp show state 立即失败,报 RPC 端点未注册(error 1753)
在本机(管理员权限)执行:
netsh wfp show state
立即返回(耗时 0 秒,退出码 1),输出为:
Unable to write output to the XML file; error = 1753 (EPT_S_NOT_REGISTERED)
There are no more endpoints available from the endpoint mapper.
1753 = EPT_S_NOT_REGISTERED —— "RPC 端点映射器中没有任何可用端点"。
这条证据为什么关键:
-
netsh wfp show state 的正常实现是:通过 RPC 调用 BFE(Base Filtering Engine)
取得完整过滤平台状态,再写入 wfpstate.xml。
- 现在它在发起 RPC 调用时就失败了,错误是 端点未在 RPC 端点映射器注册。
也就是说:BFE 服务虽然显示
Running,但它并没有把自己的 RPC 接口注册到端点映射器 ——
即 BFE 处于**"服务已启动但未完成初始化 / 假运行"**状态。
- 这直接解释了
mpssvc 的失败:mpssvc 的 ServiceMain 必须通过 RPC 与 BFE 交互
(注册/枚举自己的 WFP provider、sublayer、callout、filter)。
BFE 的 RPC 端点不存在 → 该步骤无法完成 → 服务以 Access is denied 终止。
- 该现象可稳定复现,微软工程团队可在本机一条命令验证。
附带的对照测试(同一方法、同样参数):
命令结果netsh wfp show state立即失败:error = 1753 (EPT_S_NOT_REGISTERED)``netsh wfp show counters立即返回:The following command was not found: wfp show counters.(此 build 无该子命令)netsh advfirewall show allprofiles立即返回:An error occurred while attempting to contact the Windows Defender Firewall service.``netstat -ano -p UDP正常返回(证明网络栈基本可用)Get-NetAdapter / Get-NetIPInterface正常返回> 说明:以上命令均不挂起,全部在 1 秒内返回。请勿把"命令挂起"当作本问题特征;
本问题的特征是 BFE 的 RPC 端点未注册(1753)。
给微软的关键提问由此收敛为:
为什么 BFE 报告 Running、但其 RPC 端点未注册到端点映射器?如何在不重装系统的前提下重建 BFE 的 RPC/WFP 状态?
(见第六节问题 6)
五、已执行的排查与修复(全部无效)
#操作结果1卸载火绒安全软件 + 重启(清除其 HIPS/WFP 驱动)无效2sc sdset 将服务 SD 换为含 DC 的旧版 SDDLsc config 恢复可用,服务仍失败3给 LocalService / NT SERVICE\mpssvc 授予服务对象完全控制无效4sc sidtype mpssvc unrestricted(RESTRICTED→UNRESTRICTED)无效5禁用全部第三方 WFP 驱动无效6重置 BFE WFP 持久化存储无效7重建 LogFiles\Firewall 并修正权限无效8修正 SharedAccess\Parameters\FirewallPolicy\{Domain,Standard,Public}Profile 的 ACL无效9secedit /export /areas USER_RIGHTS 核查用户权限分配6 项必需权限均含 S-1-5-19(LOCAL SERVICE),与 Windows 默认一致 → 正常10sfc /scannow退出码 0,"未找到任何完整性冲突"11DISM /Online /Cleanup-Image /RestoreHealth退出码 0,"The operation completed successfully."12netsh winsock reset + netsh int ip reset + 多次重启无效13regsvr32 hnetcfg.dll / netcfgx.dll / netman.dll / netshell.dll无改善14netsh wfp show state立即失败(0 秒):Unable to write output to the XML file; error = 1753 (EPT_S_NOT_REGISTERED)「RPC 端点映射器中无可用端点」 —— 证明 BFE 虽为 Running 但其 RPC 端点未注册。见 4.6---
六、希望微软协助确认的问题(Questions)
What we are asking Microsoft to confirm
- 如何在不必重装系统的情况下修复/重新注册 Windows Defender Firewall 服务及其 WFP 组件?
- 是否存在受支持的方式重置 Windows 防火墙服务注册与 WFP 持久状态(例如通过 DISM 重新安装相关组件、
或
msdt/故障排除包、或某个官方修复工具)?
-
mpssvc 的 ServiceMain 在何种具体条件下会返回 ERROR_ACCESS_DENIED?
是否有办法获取该失败点的详细跟踪(例如 WPP/ETW 跟踪 mpssvc.dll,
或 Microsoft-Windows-Windows Firewall With Advanced Security 分析日志)?
- 请确认:就地修复安装(in-place repair install,同一 Win10 22H2,保留个人文件与应用)
是否为该情形的受支持修复手段;若是,是否有更轻量的官方替代方案。
- 本机服务 SDDL 呈 CIS 基线加固形态、
LogFiles\Firewall 被删 —— 是否有官方的
"安全基线回滚/服务 ACL 还原"工具可恢复系统默认可写状态。
-
netsh wfp show state 在本机立即失败:
Unable to write output to the XML file; error = 1753 (EPT_S_NOT_REGISTERED)
("RPC 端点映射器中无可用端点")。请问:
- 为什么 BFE 服务显示
Running、但其 RPC 端点没有注册到 RPC 端点映射器?
这是否就是 mpssvc 的 ServiceMain 返回 ERROR_ACCESS_DENIED 的直接原因?
- 是否存在受支持的方式重建 BFE 的 RPC/WFP 状态
(例如重新注册 BFE 的 RPC 接口、重置
HKLM\SYSTEM\CurrentControlSet\Services\BFE\Parameters\Policy\Persistent,
或通过 DISM/官方工具重新安装 BFE 与 Windows 防火墙组件)?
- 是否有办法拿到
mpssvc 初始化阶段(经 RPC 向 BFE 注册 WFP 组件)的
ETW/WPP 跟踪,以定位返回 ERROR_ACCESS_DENIED 的确切调用点?