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

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

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

当我在“我的电脑”上转到 Linux 时,我仍然看到 Ubuntu-20.04 的共享以及其中的所有文件。我该如何删除这些文件以及共享?

在此处输入图片描述

答案1

简短回答: wsl --unregister <distro>(从 PowerShell 或 CMD,非管理员会话)应该删除分发版,全部文件其中,并分享。

更多详情:

需要了解一些简要的历史和背景才能理解发生了什么。在 WSL 中安装发行版(例如 Ubuntu)时,会安装两件东西:

  • 首先是 Store 包本身(在 中C:\Program Files\WindowsApps\<distroPackage>)。您可以通过转到 Admin PowerShell 并运行来查看它:

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

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

曾经有一段时间,在 Windows 10 下(可能现在仍然如此),当你卸载 Store 包时(通过“添加或删除程序”或右键单击“卸载”在“开始菜单”项上)卸载分发文件。

那真糟糕。

首先,Windows 商店应用程序的“卸载”信息显示,“您的文件不会受到影响”,但对于 WSL 发行版来说并非如此。这至少导致此用户

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

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

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

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

答案2

用户在尝试取消注册之前需要执行列表操作:

wsl --list --all

如果用户希望卸载的应用程序是默认应用程序,则需要进行更改,否则不会取消注册。

用户需要输入列表结果中显示的完整名称。在本例中:

wsl --unregister Ubuntu-20.04

相关内容