在持续无法安装 2020 年 2 月累积更新 (KB4532693) 后,我在 CBS.log 中看到错误 0x80070003。
记录的错误始终是:
2020-03-06 21:29:44, Error CBS Shtd: Failed while processing non-critical driver operations queue. [HRESULT = 0x80070003 - ERROR_PATH_NOT_FOUND]
...其中ERROR_PATH_NOT_FOUND
相应的 Win32 错误代码 (3) 被转换为HRESULT
。
相应的错误%WINDIR%\inf\setupapi.dev.log
如下所示:
>>> [Install Driver Updates]
>>> Section start 2020/03/06 21:29:43.850
cmd: C:\WINDOWS\winsxs\amd64_microsoft-windows-servicingstack_31bf3856ad364e35_10.0.18362.651_none_5f2896f458eff373\TiWorker.exe -Embedding
sto: Image State = Specialized
sto: Image Architecture = amd64
sto: Image OS Version = 10.0.18363
sto: Image Product Type = WinNT
sto: Transaction = CbsDriversAndPrimitives
sto: Driver Updates = 644
! inf: Unable to load INF: 'C:\WINDOWS\System32\DriverStore\FileRepository\netathrx.inf_amd64_220db23f5419ea8d\netathrx.inf'(00000003)
!!! inf: Invalid INF 'C:\WINDOWS\System32\DriverStore\FileRepository\netathrx.inf_amd64_220db23f5419ea8d\netathrx.inf', parsing error on line 0. Code = 1002
!!! sto: Failed to get version info for driver update 'C:\WINDOWS\System32\DriverStore\FileRepository\netathrx.inf_amd64_220db23f5419ea8d\netathrx.inf'. Error = 0x00000003
<<< Section end 2020/03/06 21:29:44.069
<<< [Exit status: FAILURE(0x00000003)]
因此,我似乎正在寻找一个名为 的文件C:\WINDOWS\System32\DriverStore\FileRepository\netathrx.inf_amd64_220db23f5419ea8d\netathrx.inf
。应该包含此文件的文件夹不存在。不过,父文件夹的权限 (ACL) 存在轻微问题。令人惊讶的是,该文件netathrx.inf
存在于 中%WINDIR%\INF
。
这台笔记本电脑中确实有一个 Qualcomm Atheros 网络适配器:
Qualcomm Atheros QCA9565 / AR9565 无线网络适配器
我现在的问题是:我如何找到该文件并替换它以期之后更新安装成功?
注意:现在我已经尝试了所有方法,包括手动安装(累积)更新(使用dism /online
带和不带安装方式install.wim
)/source
,我还使用了sfc /scannow
(发现并修复了一问题,但此后再也没有报告过任何问题)。因此,我不知道除了使用 Windows 10 安装介质中的“修复”功能外,我还能采取什么非破坏性措施,我担心这会重置注册表中的内容,从而影响已安装的程序。
我没有第三方 AV/AM 解决方案,而是使用 Windows Defender 应用程序套件。
答案1
有问题的适配器似乎导致更新安装需要netathrx.inf
以下报告lspci
(在 Linux 上):
05:00.0 Network controller: Qualcomm Atheros QCA9565 / AR9565 Wireless Network Adapter (rev 01)
我选择调查该问题的方式如下:
- 使用 Microsoft 的媒体创建工具下载“Windows 10”的原始副本
- 提取匹配的 Windows
install.wim
作为install.esd
- 安装 (
dism /mount-image /imagefile:install.wim /index:1 /mountdir:%CD%\mount /readonly
) System32\DriverStore\FileRepository\netathrx.inf_amd64_220db23f5419ea8d\netathrx.inf
检查与INF\netathrx.inf
挂载点相关的内容- 将上一步的文件复制到某个临时位置
- 卸载
install.wim
,丢弃所有可能的更改(dism /unmount-image /mountdir:%CD%\mount /discard
)
调查结果如下:
- 两个位置的文件似乎完全相同,且硬链接到相同的内容(在 SxS 中也经常可以看到这种情况)
- 对文件内容进行摘要计算,证明它们是相同的(它们也与 中现有的相同
%SystemRoot%\INF
)
以供参考
作为参考,我给出了 SHA-2 和 SHA-1
netathrx.inf
:77dde20a2eed36696f2f5e036a838ff0fbc45dec33ad7647c789397c96553240 netathrx.inf 5a57d3a77021e14bec535dbe2d05ee734ec36dd0 netathrx.inf
在验证了这些事情之后,解决这个紧急问题的途径似乎很清晰(尽管我当时并不知道这个问题背后是否隐藏着更大的问题)。
由于 ACL 的限制,%SystemRoot%\System32\DriverStore\FileRepository
我选择“滥用”执行程序模拟SYSTEM
(又名 LocalSystem)。这可以通过在提升的提示符下执行psexec -sid %COMSPEC%
(甚至psexec -sid cmd.exe
)来完成。
这样,我现在就可以(当前工作目录是%SystemRoot%
)为丢失的 INF 文件创建目录:
md System32\DriverStore\FileRepository\netathrx.inf_amd64_220db23f5419ea8d
之后我只是将文件硬链接到位:
mklink /h System32\DriverStore\FileRepository\netathrx.inf_amd64_220db23f5419ea8d\netathrx.inf INF\netathrx.inf
无需重新启动,我就可以再次尝试安装所述累积更新,然后重新启动以查看是否成功。
而这次它确实成功了。
希望这个详细的描述能帮助其他人解决类似的问题。不幸的是,这是一个高度手动的过程,我很惊讶地看到dism /online /cleanup-image /checkhealth
,dism /online /cleanup-image /scanhealth
并dism /online /cleanup-image /restorehealth
没有报告或修复这个问题。
笔记:请注意,install.wim
文件夹内netathrx.inf_amd64_220db23f5419ea8d
包含的文件不仅仅是 INF。我怀疑在其他情况下复制(或如果它们存在于其他地方则进行硬链接)文件是有意义的。
答案2
我(和一些其他上个月,有 100 人遇到了同样的问题。用户界面抛出的错误只是一条非常平淡的消息:“某些更新文件丢失或存在问题。我们稍后会尝试再次下载更新。”
我很震惊,没有实际的方法来修复驱动程序存储,但无论如何,我用以下方法修复了这个问题执行程序
psexec -i -d -s xcopy %WINDIR%\WinSxS\amd64_dual_netathrx.inf_31bf3856ad364e35_10.0.19041.1_none_aca2c01a764c25fb\ %WINDIR%\System32\DriverStore\FileRepository\netathrx.inf_amd64_220db23f5419ea8d\