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子系统”。 
尝试重新启动LxssManage,但发现服务里压根没有这个服务。
猜想是不是缺了这个服务导致我的wsl用不了,于是,搜索LexxManager关键词,参考下面这个网站下载了它所说的两个.dll放到对应的位置。重启电脑后,WSL还是不能用。
Win11系统提示找不到LxssManager.dll文件的解决办法-CSDN博客文章浏览阅读870次,点赞13次,收藏17次。其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个LxssManager.dll文件(挑选合适的版本文件)把它放入到程序或系统目录中,当我们执行某一个.exe程序时,相应的DLL文件就会被调用,因此将缺失的文件放回到原目录之后就能打开你的软件或游戏了.那么出现LxssManager.dll丢失要怎么解决?_lxssmanagerhttps://blog.csdn.net/gggiweeq/article/details/140455158
这篇文章里的方法也试过了,还是不行。
https://thegeekpage.com/wslregisterdistribution-failed-with-error-0x8007019e/https://thegeekpage.com/wslregisterdistribution-failed-with-error-0x8007019e/最后是在StackOverflow的这篇文章里,找到有人说在github上下载一个完整的wsl安装包,安装后就能解决这个问题。
https://stackoverflow.com/questions/78029799/wsl-cannot-upgrade-to-wsl2-as-class-not-registered-error-arises?utm_source=chatgpt.comhttps://stackoverflow.com/questions/78029799/wsl-cannot-upgrade-to-wsl2-as-class-not-registered-error-arises?utm_source=chatgpt.com于是我下载了此时最新的2.6.0的安装包,安装时,又出现了
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,发现能正常使用了。
问题可能在于卡巴斯基安全软件为了系统安全,阻止了注册表写入。
。。。