在 Windows 11 上卸载发行版后删除 WSL2 文件

dev*_*r82 5 wsl2

我已使用 WSL2 在 Windows 11 计算机上安装了 Ububtu-20.04。我最近卸载了它并安装了 Ubuntu-22.04 来替换它。

当我在我的 PC 上转到 Linux 时,我仍然看到 Ubuntu-20.04 的共享以及其中的所有文件。如何将这些文件与共享一起删除?

在此输入图像描述

Not*_*1ds 8

简短回答:( wsl --unregister <distro>从 PowerShell 或 CMD,非管理会话)应该删除发行版、其中的所有文件以及共享。

更多详情:

需要一些简短的历史和背景才能了解正在发生的事情。当您在 WSL 中安装发行版(例如 Ubuntu)时,会安装两件事:

  • 首先,Store 包本身(在C:\Program Files\WindowsApps\<distroPackage>)。您可以通过转到管理 PowerShell 并运行以下命令来查看这一点:

    Get-ChildItem -Recurse 'C:\Program Files\WindowsApps\' | Where-Object {$_.Name -eq 'install.tar.gz' }
    
    Run Code Online (Sandbox Code Playgroud)
  • 然后,当您第一次启动发行版(例如ubuntu.exeubuntu2204.exe等)时,它会安装实际的 rootfs 并注册发行版。您可以使用以下命令查看这些内容(无需管理员):

    Get-ChildItem HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss\ |
     ForEach-Object {
         (Get-ItemProperty $_.PSPATH) | Select-Object DistributionName,BasePath
     }
    
    Run Code Online (Sandbox Code Playgroud)

曾经有一段时间,在 Windows 10 下(可能仍然是这种情况),当您卸载 Store 软件包(通过“添加或删除程序”或右键单击“开始”菜单项上的“卸载” )时,它也会卸载分发文件。

那很糟糕。

首先,Windows 中应用商店应用程序的“卸载”信息显示“您的文档不会受到影响”,而 WSL 发行版则不然。这导致了数据丢失,至少对于该用户而言。

在某些时候,我相信是在 Windows 11 中,这种情况发生了变化,因此卸载 Store 软件包(就像您所做的那样)不会删除发行版及其文件。我认为这是一个更好的方法。

现在,您可以通过两个独立的步骤删除 WSL 发行版:

  • 卸载商店包
  • wsl --unregister分布

wsl --export我仍然偏执地建议在删除 Store 包之前备份发行版 ( )。万一 ...