问题

使用 wsl --update --web-download 命令升级 WSL,出现以下报错:

PS C:\Users\jjl9807> wsl --update --web-download
正在检查更新。
正在将适用于 Linux 的 Windows 子系统更新到版本: 2.2.4。
Could not write value  to key \SOFTWARE\Classes\Directory\shell\WSL.   Verify that you have sufficient access to that key, or contact your support personnel.
更新失败(退出代码: 1603)。
日志文件: C:\Users\jjl98\AppData\Local\Temp\wsl-install-logs.txt
Error code: Wsl/UpdatePackage/ERROR_INSTALL_FAILURE

笔者所用 WSL 版本如下:

PS C:\Users\jjl9807> wsl -v
WSL 版本: 2.1.5.0
内核版本: 5.15.146.1-2
WSLg 版本: 1.0.60
MSRDC 版本: 1.2.5105
Direct3D 版本: 1.611.1-81528511
DXCore 版本: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows 版本: 10.0.19045.4651

解决

打开注册表编辑器,将以下注册表项删除或重命名后再次尝试升级即可:

计算机\HKEY_CLASSES_ROOT\Drive\shell\WSL
计算机\HKEY_CLASSES_ROOT\Directory\Background\shell\WSL
计算机\HKEY_CLASSES_ROOT\Directory\shell\WSL

由于系统版本的不同,以上注册表项的具体路径也有可能是下面这样:

计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Drive\shell\WSL
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\background\shell\WSL
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\WSL

参考资料