问题
首次使用 winget,报无法注册 windows.firewall 扩展,防火墙无法启动。
相关问题
分析
不仅是 winget 会因为防火墙故障而无法启动,其它 Microsoft Store 应用也可能遇到,说明这问题出在防火墙,而不是 winget。
经过排查发现根源是 Base Filtering Engine 服务无法启动导致。用 sc 命令可以发现,Windows Defender Firewall (mpssvc) 依赖 Base Filtering Engine (bfe),故 BFE 无法启动必然导致防火墙无法启动。
1 | $ sc qc mpssvc |
尝试
-
使用 sfc 修复几次,bfe 还是无法启动!
-
从另一台机器导出一份干净的 BFE 服务注册信息,导入故障机,依然无法启动。
-
后来想到:导入时使用的是当前用户身份,可能权限不太一样,于是检查 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BFE 下每个键的权限,发现确实是不一样的。
-
给 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BFE\Parameters 设置权限,添加用户
NT Service\BFE
即可。