wsl2更新后,报错0x8007273d解决方案

这篇具有很好参考价值的文章主要介绍了wsl2更新后,报错0x8007273d解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

wsl2更新后,报错0x8007273d解决方案

产生原因

在wsl2更新后,可能会出现Error code: Wsl/Service/0x8007273d时,可能是电脑中存在的代理软件(比如proxifier)与wsl发生冲突导致的。
Proxifer开发人员解释如下:

如果Winsock LSP DLL被加载到其进程中,则wsl.exe将显示此错误。最简单的解决方案是对wsl.exe使用WSCSetApplicationCategory WinAPI调用来防止这种情况。在后台,该调用在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WinSock2\Parameters\AppId_Catalog中为wsl.exe创建一个条目。

wsl2更新后,报错0x8007273d解决方案,windows

临时解决方案

管理员身份启动cmd/powershell , 运行。

netsh winsock reset

该方案需要每次启动wsl时重新执行,非常不方便。

永久解决方案

​ 这里我找到了两种不同的解决方案,一种是卸载wsl2更新,降级之后就不会发生冲突了,但是不能使用wsl2的新功能;第二种是则需要添加注册表,但不需要降级安装,但是每次wsl更新都需要重新执行,因为版本化路径不断变化,也很难判断该应用程序何时更新。

方案一 wsl降级
  • 在添加或删除程序中:先卸载Windows Subsystem for Linux Update,然后卸载Windows Subsystem for Linux
  • 重新启动wsl,会跳转至https://aka.ms/wsl2kernel
  • 重新下载wsl_update_x64.msi 安装即可。
  • 最重要的一点,千万不要更新wsl
方案二 添加注册表信息

主要原理是在\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WinSock2\Parameters\AppId_Catalog\添加相应的注册表项,添加注册表项可以使用软件NoLsp.exe添加也可以使用powershell脚本一键添加,这里都演示一下:

使用软件添加注册表项

我们所使用软件是proxifierNoLsp.exe

NoLsp.exe下载地址:http://www.proxifier.com/tmp/Test20200228/NoLsp.exe

使用步骤

  • 管理员打开powershell,执行如下命令,获取应用商店版wsl安装目录

    cd "C:\Program Files\WindowsApps"
    ls
    

    找到包含WindowsSubsystemForLinux字段就是,例如我电脑上是MicrosoftCorporationII.WindowsSubsystemForLinux_1.2.5.0_x64__8wekyb3d8bbwe

  • 管理员打开cmd,执行以下命令,下面的命令就相当于添加注册表(记得将MicrosoftCorporationII.WindowsSubsystemForLinux_1.2.5.0_x64__8wekyb3d8bbwe修改为上一步所找到的字段):

    NoLsp.exe %USERPROFILE%\AppData\Local\Microsoft\WindowsApps\wsl.exe
    
    NoLsp.exe "C:\Program Files\WindowsApps\MicrosoftCorporationII.WindowsSubsystemForLinux_1.2.5.0_x64__8wekyb3d8bbwe\wsl.exe"
    NoLsp.exe "C:\Program Files\WindowsApps\MicrosoftCorporationII.WindowsSubsystemForLinux_1.2.5.0_x64__8wekyb3d8bbwe\wslservice.exe"
    NoLsp.exe "C:\Program Files\WindowsApps\MicrosoftCorporationII.WindowsSubsystemForLinux_1.2.5.0_x64__8wekyb3d8bbwe\wslg.exe"
    NoLsp.exe "C:\Program Files\WindowsApps\MicrosoftCorporationII.WindowsSubsystemForLinux_1.2.5.0_x64__8wekyb3d8bbwe\wslhost.exe"
    
使用powershell脚本添加注册表项

不想使用软件的话,也可以使用管理员身份运行powershell执行下列脚本,输出success即可。

#Requires -RunAsAdministrator
# Fix for https://github.com/microsoft/WSL/issues/4177

$MethodDefinition = @'
[DllImport("ws2_32.dll", CharSet = CharSet.Unicode)]
public static extern int WSCSetApplicationCategory([MarshalAs(UnmanagedType.LPWStr)] string Path, uint PathLength, [MarshalAs(UnmanagedType.LPWStr)] string Extra, uint ExtraLength, uint PermittedLspCategories, out uint pPrevPermLspCat, out int lpErrno);
'@
$UserProfilePath = $env:USERPROFILE

$Ws2Spi = Add-Type -MemberDefinition $MethodDefinition -Name 'Ws2Spi' -PassThru

$WslLocation = Get-AppxPackage MicrosoftCorporationII.WindowsSubsystemForLinux | Select-Object -expand InstallLocation

$Executables = ("wsl.exe", "wslservice.exe","wslg.exe","wslhost.exe");
$Location = ($WslLocation,"C:\Program Files\WSL","C:\Windows\System32","${UserProfilePath}\AppData\Local\Microsoft\WindowsApps");
foreach ($Location in $Location){
    foreach ($Exe in $Executables) {
        $ExePath = "${Location}\${Exe}";
        $ExePathLength = $ExePath.Length;

        $PrevCat = $null;
        $ErrNo = $null;
        if ($Ws2Spi::WSCSetApplicationCategory($ExePath, $ExePathLength, $null, 0, [uint32]"0x80000000", [ref] $PrevCat, [ref] $ErrNo) -eq 0) {
            Write-Output "Added $ExePath!";
        }
    }
}
Write-Output "success";

修复完成之后需要进行系统重启,如果您不想重新启动,可以使用taskkill -IM "wslservice.exe" /F杀死wsl相关东西并重新启动WSL也可以。

参考链接

https://github.com/microsoft/WSL/issues/4177文章来源地址https://www.toymoban.com/news/detail-619735.html

到了这里,关于wsl2更新后,报错0x8007273d解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 踩坑!WSL2报错:docker unrecognized service

    WSL2安装Docker后执行 sudo service docker start 报错:docker: unrecognized service实录 在WSL中安装Docker要使用命令: 即原生linux docker,若使用以下命令安装则会提示unrecognized service。。。 安装过程见 [Install Docker in WSL](https://blog.csdn.net/weixin_36815313/article/details/107641262)

    2024年02月15日
    浏览(34)
  • wsl2中的ubuntu使用systemctl报错问题

    显示如下错误:System has not been booted with systemd as init system (PID 1). Can\\\'t operate 原因在于wsl中的ubuntu不完整,手动安装systemctl貌似也不好用,可以使用等同的sysvinit命令 替换关系如下:  

    2024年02月11日
    浏览(48)
  • WSL2的安装与配置(创建Anaconda虚拟环境、更新软件包、安装PyTorch、VSCode)

    以管理员身份打开 PowerShell(“开始”菜单 “PowerShell” 单击右键 “以管理员身份运行”),然后输入以下命令: 以管理员身份打开 PowerShell 并运行: ❗️重新启动计算机(必须) 下载内核并安装: 适用于 x64 计算机的 WSL2 Linux 内核更新包 打开 PowerShell,然后在安装新的 Linux

    2024年04月15日
    浏览(55)
  • 这里做一篇关于wsl2更新到最新版本使用镜像网络,但是docker创建的容器不能被访问的问题(困扰了我一整天)

    在windows2023年9月的一次更新中,wsl2支持了新的网络模式镜像模式,他能够通过localhost地址从wsl2内部连接到windows的127.0.0.1地址 ##相当于是和本地主机拥有同一个ip 原wsl2是不支持的,虽说是net网络模式,可访问主机,主机也可访问wsl2,同时也可上网,但是不能被网络访问,如

    2024年04月16日
    浏览(50)
  • WSL2 + docker + cuda 报错nvidia-container-cli: mount error: file creation failed:libnvidia-ml.so.1: fi

    WSL2 + Ubuntu 22.04 显卡驱动: 528.89 CUDA: 11.7 在创建docker时使用 --gpus all 会报错: 参考 issue1551 解决方式是 先不使用gpu创建容器 删除相关文件(注意根据报错删除文件,不要删多) 创建不包含这些文件的新的镜像 使用新的镜像创建容器 实现如下: 此时可以正常创建容器。

    2024年02月15日
    浏览(67)
  • 【WSL2】【图形界面】【CUDA驱动】WSL2 Ubuntu+gnome原生图形界面及WSL2显卡CUDA驱动的安装

      没有图形化界面的Ubuntu实在是看着不爽,虽然已经习惯用命令。为了更加方便使用WSL2子系统,还是配置了gnome原生桌面(虽然不是很轻量级,但是舒服啊!),然后因为有深度学习需求,有NVIDIA的显卡顺带配置了一下显卡驱动。   下面看看如何配置WSL2图形界面和显卡

    2024年02月10日
    浏览(61)
  • 【dev on wsl2】wsl2 with vscode简单配置

    1.1 安装方式选择: 安装wsl2一般来说有三种方式: cmd/powershell 命令行安装(建议管理员模式) microsoft store 安装 microsoft 官网安装 ps: win + R调出运行框,输入\\\"winver\\\" 查看 Windows 版本及内部版本号 ① 命令行安装wsl的先决条件是必须运行 Windows 10 版本 2004 及更高版本(内部版本

    2024年02月05日
    浏览(44)
  • 解决WSL2占用内存过多问题(Docker on WSL2: VmmemWSL)

    安装完WSL2后,又安装了Docker,使用了一段时间,发现电脑变卡,进一步查看,发现CPU和内存占用过大,如下图: docker仅仅运行了mysql和zk,在关掉docker后,占用内存仍然很大: 然后关掉wsl后,发现内存下降了。 但是,这种解决方案并不满足我的诉求,我想要的结果是:dock

    2024年02月08日
    浏览(48)
  • SSH连接WSL2踩坑记录与增加端口转换规则,实现外网与WSL2的连接

    1. 在WSL里的操作 1.1 重装 openssh-server 1.2 修改配置信息 打开文件后,可以用搜索修改如下的信息 把上面的都改完好,就重启ssh服务 至止,WSL里的的操作基本上已经完成了 2. ssh连接 2.1 先测试一下本机的终端是否能连接到WSL的ssh 先打开 power shell 或者 cmd 如上图,提示输入密码

    2024年02月15日
    浏览(57)
  • wsl2相关问题

    wsl 删除相关文件后,如删除docker 无用的容器和镜像,windows上磁盘仍然无法自动回收空间  (参考:[microsoft/ WSL ](https://github.com/microsoft/WSL/issues/4699#issuecomment-627133168))

    2024年02月09日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包