记一次 Windows 更新 0x800703F1 错误的修复¶
背景¶
最近在准备课堂展示,需要用到 Windows,于是翻出鸿蒙电脑,跑起了 Windows on ARM 虚拟机。结果 Windows 更新老是报 0x800703F1 错误,我做了不少自己都说不清的尝试,最后稀里糊涂地解决了。
现象¶
现象是,Windows 更新界面里所有更新一律失败,统一报错 0x800703F1。上网搜了一圈,网上信息基本都指向注册表损坏,例如运行下面这条命令时同样会报错:
失败的尝试¶
参考了网上的大量资料([1]、[2]),各种方法都试了一遍,无一成功:
sfc /scannow和DISM /Online /Cleanup-Image /RestoreHealth都跑过,修复时仍报同样的 0x800703F1 错误。sysnative component scanner跑了一段输出后就卡住不动,不知道在干什么。- 下载了新的 Windows 11 on ARM ISO,选择保留数据重装,结果还是报 0x800703F1。
成功的尝试¶
最后抱着试试看的心态,采用了 Reddit 上这个方案:
-TekkieBoy-
Hi,
try the SequenceNumberChecker from there:
https://github.com/MOV-EDX/SequenceNumberChecker/releases/tag/1.0.1
Copy the drivers hive from the path:
C:\Windows\System32\config
on your desktop.
Create a copy from your drivers hive as backup and save it on a safe place.
Then drag and drop the damaged drivers hive on the SequenceNumberChecker tool.
The tool should then start and try’s to repair the hive.
When you see the message:
Repairs have completed...press any key to exit
Do it and then copy the repaired hive back in the config folder.
我把其中的 drivers 换成 components(我的 drivers 没坏,坏的是 components),之后 Windows 更新忽然就恢复正常了。看了看这个程序的源码,就是强制把 sequence number 改了,但这真的是合理的修复吗,不会产生新的数据不一致问题吗?问题是没了,但是我并没有得到彻底解决问题的安全感。
感想¶
每次修 Windows,都让我觉得整个过程稀里糊涂。看到一个报错,搜索一番,得到一大堆可能的修复方法,只能一个个试:修不好不知道原因,修好了也不知道原因。Windows 是闭源的,我看不到源码,不知道背后到底发生了什么;要是在 Linux 上,我早就翻源码去调试了。而且我也没有在 Windows 里配置 Agent,没法让 AI 现场反编译 Windows 程序,搞清楚这个报错到底从哪来。说到底就是稀里糊涂,不想用 Windows。