某日晚上,我决定对许久未更新的 Windows 11 预览版系统进行更新,更新至版本号 23615.1000。
前期进行的非常顺利,在系统更新设置中下载、安装更新,随后重启。
然而,在电脑第二次重启之后,屏幕上闪过“正在撤销所作的更改……”,随后登录系统后发现更新失败。
重试多次后均得到相同的结果。
初步尝试
由于之前系统曾经崩溃过,所以怀疑是之前的修复没有正确修复一些系统文件。 在检索了一些网上资料后,发现微软官方社区对于系统更新失败的回答千篇一律,基本都是让你在管理员模式的命令提示符上执行这些指令:
SC config wuauserv start=auto
SC config bits start=auto
SC config cryptsvc start=auto
SC config trustedinstaller start=auto
SC config wuauserv type=share
net stop wuauserv
net stop cryptSvc
net stop bits
net stop msiserver
ren C:\Windows\SoftwareDistribution SoftwareDistribution.old
ren C:\Windows\System32\catroot2 catroot2.old
net start wuauserv
net start cryptSvc
net start bits
net start msiserver
DISM /online /Cleanup-Image /StartComponentCleanup
sfc /SCANNOW
DISM /Online /Cleanup-Image /ScanHealth
DISM /Online /Cleanup-Image /CheckHealth
DISM /Online /Cleanup-image /RestoreHealth
基本就是重新启动一些关键服务,备份重要系统文件,然后让 DISM 尝试修复系统。 这些操作在之前抢救系统的时候已经做过了。 保险起见,又执行了一遍,结果不出所料的没有任何用处。 之后,我又尝试了 Windows 自带的疑难解答程序,结果也没有任何用处。
峰回路转
接下来的内容包含了本人的尝试过程;如果你也遇到了类似的问题,你完全不需要一步一步跟着去做,而是可以直接看解决方案。
多次尝试失败之后,我(痛苦地)决定重装系统,于是从官网上下载了预览版的 Windows 11 镜像。
出乎意料的是,直接本地不格式化磁盘的安装也失败了,而且错误代码也与之前更新失败的报错一模一样:0x80070002。
但是这次它提供了更多的信息:
在 INSTALL_DRIVERS 操作过程中的 SAFE_OS 阶段,安装失败。
在互联网上检索这条报错信息后,找到了这个回答,有顺藤摸瓜找到了这个这个回答。
简单来说,就是在 C:\Windows.old\$WINDOWS.~BT\Sources\Pather 目录下,有个叫 setupact.log 的日志文件,记录了系统更新和安装的所有操作。
这个文件很大,实际上只需要看相同目录下 setuperr.log 就行了;这个只包含错误日志。检查这个文件之后,发现错误出现在某个扩展名是 .inf 的驱动文件上。
网络上的回答里面出错的是 RealTek 驱动,于是他们简单地把驱动卸载了就完事儿了。
然而我这里出错的是 nvlt.inf,一查发现是 N 卡驱动(怎么又是你,Ubuntu 更新失败十有八九也是你搞的);只好从官网上下载驱动重装。
完成之后,再次更新系统,果然成功进入了读条界面。
祸不单行
然而,更新进度在涨到 25% 之后卡住了。 半个多小时过后,我觉得不对劲了,于是上网搜索,发现有不少人在 Windows 的各个版本卡在了相同的进度上,有的甚至卡了三个多小时。 于是我抱着系统损坏无法启动的觉悟,选择长按电源键重启;还好重启之后只是更新失败,回退到了更新之前的系统版本。 继续上网冲浪,终于找到一个看起来比较靠谱的答案。 这个答案说问题是 BitLocker 导致的。 鉴于这玩意儿在之前已经导致过一次崩溃,我果断地把这玩意儿关掉了,大概花了十几分钟。 关掉之后,更新一切正常,很快进入系统。
很不幸,进入新系统后问题又出现了。 这次是网络问题,即使 WiFi 显示“已连接”,也无法正常上网,并且在网络设备中显示“没有适配器可用”。 打开设备管理器,发现 WiFi 设备的事件日志里有如下报错:
设备
PCI\VEN_10EC&DEV_B852&SUBSYS_485317AA&REV_00\00E04CFFFE88520100需要进一步安装。
选择更新驱动,但显示驱动是最新的版本。 多次重启电脑也没有解决问题。 此时,我想起在某个中文论坛上看到的方法——在设备管理器中移除设备再重新添加回来。 但这个回答遭到了许多其他人的反对,因为有不少人这么做了之后再也没有成功的添加回设备。 本着“反正已经不能用了,不如死马当活马医”的想法,我尝试了这种措施。 先右键 WiFi 设备,选择【卸载设备】;然后再设备管理器的菜单栏里选择【操作】再选择【扫描检测硬件改动】。 没想到一通操作之后问题居然解决了。
这种方法可能并不对所有人适用,且可能产生灾难性的后果!
总结
至此,一段坎坷的 Windows 更新过程正式结束。 事实证明,Windows 系统中存在很多冗余机制,能够让系统在略微损坏的时候仍然能够保持运行,但迟早会在什么时候坑到你。
以及,如果你不是特别在意电脑被盗导致数据泄露,还是把 BitLocker 这玩意儿关掉比较好。