WSL2 Error code: Wsl/Service/0x8007273d解决

首先说结论,这个问题(在我所遇到的情况中)大多数是由于加速器软件或者全局代理类软件修改了系统的Winsock来全局加载代理导致的,而WSL2与其不兼容,所以产生 0x8007273d 错误。

你可以通过简单地命令行中运行netsh winsock reset(管理员权限,本文后续也默认在管理员权限cmd中运行)来重置Winsock,然后 WSL2 就可以正常工作了。
但也这会使 Proxifier等(使用 winsock 的软件)不再能工作。

如果你希望能使用此类软件也能使用WSL2,请继续向下看:

我首先通过搜索找到了这样一篇文章:https://wangyj.medium.com/the-solution-to-wsl-error-the-attempted-operation-is-not-supported-for-the-type-of-object-aa559854d1e3

我发现它的思路是正确的,但对当前最新版本的WSL2(从Micosoft store安装或更新的)而言不适用,需要做一些小调整。
下面分别详细介绍早期版本和当前最新版的详细修复方法。

早期版本的步骤(如果你是新安装的Win系统或从 “启用或关闭Windows功能” 安装的wsl):

  1. 下载 Nolsp.exe:http://www.proxifier.com/tmp/Test20200228/NoLsp.exe
  2. 通过 NoLSP.exe "C:\Windows\System32\wsl.exe"配置 nolsp,它会添加适当的注册表项。
  3. 关闭所有 wsl 终端并重新打开 wsl
    现在,wsl2 可以正常工作了。

(替代方法)如果不想使用 Nolsp.exe 二进制文件,可以使用 regedit.exe 在注册表中手动添加以下项目。

1
2
3
4
5
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WinSock2\Parameters\AppId_Catalog\0408F7A3]
"AppFullPath"="C:\Windows\System32\wsl.exe"
"PermittedLspCategories"=dword:80000000

(或保存为.reg文件运行导入)

如果你是从 Micosoft store 安装的WSL,或者你曾经运行过 wsl --update (也是 Store 版 WSL):

这两种情况使用的是 Micosoft Store 中的 wsl2,它们真正执行主要功能的程序路径不同,因此在修复步骤中需要指定 WinApps 应用程序的文件路径(”C:\Program Files\WindowsApps\WSl安装文件夹名\wsl.exe”),而不是系统目录中”C:\Windows\System32\wsl.exe”,另外,最新版本还涉及wslservice.exe的文件(它作为后台服务运行,也需要重启)

首先,你可以通过在 cmd(admin) 中执行以下指令来查看WSl安装文件夹名:

1
2
cd "C:\Program Files\WindowsApps\"
dir MicrosoftCorporationII.WindowsSubsystemForLinux_*

你会看到WSl安装文件夹名,格式类似 MicrosoftCorporationII.WindowsSubsystemForLinux_1.2.5.0_x64__8wekyb3d8bbwe,复制它并且在后续步骤中的路径中替换WSl安装文件夹名,完整的路径类似C:\Program Files\WindowsApps\MicrosoftCorporationII.WindowsSubsystemForLinux_1.2.5.0_x64__8wekyb3d8bbwe\wsl.exe
(不同的 wsl2 版本有不同的安装文件夹名。

步骤:

  1. 下载 Nolsp.exe: http://www.proxifier.com/tmp/Test20200228/NoLsp.exe
  2. 运行 NoLSP.exe "C:\Program Files\WindowsApps\MicrosoftCorporationII.WindowsSubsystemForLinux_1.2.5.0_x64__8wekyb3d8bbwe\wsl.exe", 它会添加一个正确的注册表。
  3. 运行 NoLSP.exe "C:\Program Files\WindowsApps\MicrosoftCorporationII.WindowsSubsystemForLinux_1.2.5.0_x64__8wekyb3d8bbwe\wslservice.exe" ,它将添加一个正确的注册表。
    (注意:如果你使用的是不同的版本,记得在以上两步使用你的WSl安装文件夹名来替换掉1.2.5.0_x64__8wekyb3d8bbwe
  4. 运行 wsl --shutdown && net stop WslService && net start WslService,关闭所有 wsl 终端并重新打开 wsl
    现在,wsl2 可以正常工作了。

另外,请注意,每次 wsl 更新后,WindowsApps 的路径都会发生变化(因此将来更新后需要重新配置 nolsp)。

Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

请我喝杯咖啡吧~

支付宝
微信