答案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.exe
或ubuntu2204.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