记一次极其顽固的 Xbox Gaming Services 死锁排查和其修复方法 (0x80070426 / Error 1060)

背景

近期 Windows 11 更新后,Xbox App 彻底罢工,打开直接报错 0x80070426。 打开系统服务 (services.msc),发现里面躺着两个同名的 Gaming Services:一个所有按钮灰显无法点击,另一个点击启动报 错误 1060: 指定的服务未安装

折腾了一圈:

  • 常规的 PowerShell Remove-AppxPackage 清理和商店重装,无解。
  • 运行微软官方的专用修复工具 GamingRepairTool.exe,毫无反应,依然无解。
  • 动用 PsExec 提权到 SYSTEM 级别执行 sc delete 试图强删该服务,竟然报 Error 5: 拒绝访问
  • 进入 WinRE 物理强删了 WindowsApps 下的文件,甚至“保留应用”的系统重装(In-place Upgrade)都没救,重启后该服务原样复活。

这就很诡异了:连 SYSTEM 权限都无权删除,且重装系统(保留配置)都洗不掉。 其实问题根本不在文件权限,也不在 AppX 部署引擎,而在于 Windows 的内核驱动状态。排查过程见下。

排查思路

既然连 SYSTEM 都报 Error 5,且覆盖安装无效(说明损坏的状态库被当做合法配置继承了),必须绕过 UWP 机制,直接通过硬编码向系统注入该服务。

使用 sc.exe create 强行写入物理路径并执行启动后。 现象很明确:系统抛出 [SC] StartService 失败 1056: 服务的实例已在运行中。 查看具体状态,显示为 STATE : 2 START_PENDING (启动挂起)。

这就解释了之前的 Error 5:进程在后台无限期卡在“启动中”状态。Windows 内核保护机制绝对禁止修改或删除一个正在 Pending 的服务,导致它获得了系统级的“无敌护盾”。

根源分析

为什么会无限挂起?Gaming Services 不是一个普通的后台程序,它深度依赖系统底层的文件系统微过滤驱动(Minifilter Driver)来挂载 Xbox 的虚拟磁盘(XVD)。

顺藤摸瓜检查底层驱动,发现基础块设备驱动 xvdd.sys 正常,但专用的游戏过滤驱动 gameflt.sys1060 未安装。 似乎是Windows 更新时意外弄丢了 gameflt 驱动的注册信息。服务启动时向内核请求调用该过滤驱动,得不到回应,陷入了无限期的阻塞死循环。

解决方案

既然死因是缺驱动导致的进程挂起,对症下药即可:

  1. 打破死锁释放句柄:强制杀掉卡死的进程。
    taskkill /F /IM GamingServices.exe /T taskkill /F /IM GamingServicesNet.exe /T
  2. 从系统驱动坟墓中挖出原生驱动: 定位到 C:\Windows\System32\DriverStore\FileRepository,搜索 gameflt.inf。 使用自带的包管理工具强行将其重新注入内核:
    pnputil /add-driver "你的gameflt.inf绝对路径" /install
  3. 唤醒内核驱动并重启服务
    sc start gameflt sc start GamingServicesNet sc start GamingServices

打开 Xbox App,正常秒进。

总结

SYSTEM 权限操作服务报 Error 5 时,多半是卡在了 START_PENDING。遇到深度绑定系统的 UWP 应用(如带虚拟磁盘逻辑的 Xbox 组件)陷入死锁,与其在应用层面上重装或纠结权限,不如直接向下查它的 .sys 内核驱动依赖。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注