安装Docker Desktop时出现报错,WSL2 升级更新失败(退出代码: 1603,错误代码: Wsl/CallMsi/Install/ERROR_INSTALL_FAILURE)解决办法
一、问题
首先遇到的问题是安装docker desktop后,启动引擎时报错
wsl update failed: update failed: updating wsl: exit code: 4294967295: running wsl command wsl.exe c:\windows\system32\wsl.exe --update --web- download: 潃汵潮⁴牷瑩慶畬琠敫⁹卜䙏坔剁居汃獡敳屳楄敲瑣牯屹桳汥屬南⹌†嘠牥晩⁹桴瑡礠畯栠癡畳晦捩敩瑮愠捣獥潴琠慨⁴敫漠潣瑮捡⁴潹牵猠灵潰瑲瀠牥潳湮汥മ뒛雦놤듨⢥胩몇믤膠›㘱㌰芀铩꾯믤膠›獗⽬慃汬獍⽩湉瑳污⽬剅佒归义呓䱁彌䅆䱉剕: exit status 0xffffffff
可以看到是wsl更新时报错,由于后面是乱码,不知道具体是什么错误,所以接下来打开管理员终端,输入wsl --list测试一下,果然,报错了
PS C:\Users\ht> wsl --list
WSL 正在完成升级...
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)。
错误代码: Wsl/CallMsi/Install/ERROR_INSTALL_FAILURE
这时候,显然报错原因找到了,没有权限写入注册表,不得不吐槽一下微软,这个bug就是不更新。
二、解决办法
打开注册表编辑器,找到对应项计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\WSL
,右键打开权限
,上面选中 SYSTEM
用户(注意别选错!),给它加上 允许完全控制
的权限,点击确定就好了(即时生效,无需重启等等)!
当你重新运行的时候会发现,又有一个新的注册表项没有权限,所以你要把上述操作应用到以下所有目录
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\WSL
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\WSL\command
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\Background\shell\WSL
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\Background\shell\WSL\command
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Drive\shell\WSL
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Drive\shell\WSL\command
大功告成!
人心如良苗,得养乃滋长。苗以泉水灌,心以理义养。一日不读书,胸臆无佳想。一月不读书,耳目失精爽。