Could not write value to key SFTWARE\ClassesDirectory\Background\shell\WSL...
WSL在更新时出错,突然不能用了。折腾了两个多小时,最后发现是安全软件的锅。。

背景:
我使用的系统是windows 11 专业版,此前已安装WSL的v2.2的一个版本。
电脑安装了卡巴斯基安全软件。
问题出现:
一天心血来潮想更新一下WSL,于是使用了wsl --update。
结果出现了
Could not write value to key \SOFTWARE\Classes\Directory\Background\shell\WSL
Verify that you have sufficient access to that key...
之后,如果再打开wsl,无论是通过windows terminal的新建标签的方式打开,或是输入任何wsl开头的指令,都会出现
wsl: WSL 安装似乎已损坏 (错误代码: Wsl/CallMsi/Install/REGDB_E_CLASSNOTREG)。
按任意键修复 WSL,或 CTRL-C 取消。
此提示将在 60 秒后超时。
在按下“任意键”后,会出现一个进度条和下面这段话。
正在更新适用于 Linux 的 Windows 子系统: 2.5.9。
进度条走完后,WSL仍然不能正常使用。
尝试过很多方法,包括在optionalfeatures.exe反复关闭开启“适用于Linux的Winodws子系统”。

参考这篇文章wsl损坏,WSLRegisterDistribution Failed with Error 0x8007019e - 魂祈梦 - 博客园背景 之前由于关机中断还是什么原因,导致wsl不能用了,今天心血来潮想要用一下wsl,于是找办法修了一下。 过程 根据下面这个文章进行修复的。 https://thegeekpage.com/wslregisterdistribution-failed-with-error-0x8007019e/
https://www.cnblogs.com/oldsaltfish/p/18377739尝试重新启动LxssManage,但发现服务里压根没有这个服务。
猜想是不是缺了这个服务导致我的wsl用不了,于是,搜索LexxManager关键词,参考下面这个网站下载了它所说的两个.dll放到对应的位置。重启电脑后,WSL还是不能用。
这篇文章里的方法也试过了,还是不行。
https://thegeekpage.com/wslregisterdistribution-failed-with-error-0x8007019e/
https://thegeekpage.com/wslregisterdistribution-failed-with-error-0x8007019e/最后是在StackOverflow的这篇文章里,找到有人说在github上下载一个完整的wsl安装包,安装后就能解决这个问题。
Could not write value to key \SOFTWARE\Classes\Directory\Background\shell\WSL
Verify that you have sufficient access to that key...
咨询了某AI,说可能是注册表权限的问题,需要给Administrators用户加上HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\Background\shell的完全访问权限。
于是我又打开注册表,找到HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\Background\shell
右键,点击“权限”,发现Administrators本身就对这个文件夹有完全访问的权限,给能看到的每个用户都加上了完全控制的权限。点击Retry还是不行。
最后,偶然把卡巴斯基安全软件关了,再重新打开安装包,结果进度条很快就走完了。此时运行WSL,发现能正常使用了。
问题可能在于卡巴斯基安全软件为了系统安全,阻止了注册表写入。
。。。

浙公网安备 33010602011771号