打开 WSL2 时,Windows 终端中出现“当文件已存在时无法创建文件”?

打开 WSL2 时,Windows 终端中出现“当文件已存在时无法创建文件”?

作为普通用户,我无法在 Windows 终端中运行 Ubuntu for WSL2。

我没有得到 bash 提示符,而是得到了以下内容,我认为这是因为我有多个同名的 Ubuntu Distro,如下所示:

Windows 版本: Microsoft Windows [版本 10.0.19044.1586]

WSL 版本:0.0.0.0

你使用的是 WSL1 还是 WSL2:WSL2

内核版本:Linux 版本 5.10.102.1-microsoft-standard-WSL2 (oe-user@oe-host) (x86_64-msft-linux-gcc (GCC) 9.3.0,GNU ld (GNU Binutils) 2.34.0.20200220) #1 SMP 2022 年 3 月 2 日星期三 00:30:59 UTC

重现步骤:

  1. 以非管理员帐户打开 Windows 终端。

  2. 单击顶部的向下箭头选项卡并选择 Ubuntu。

  3. 出现一个新选项卡,其中包含以下错误消息:

    当文件已存在时,无法创建文件。

    [进程退出,代码为 4294967295(0xffffffff)] 您现在可以使用 Ctrl+D 关闭此终端,或按 Enter 重新启动。

我认为问题与以下事实有关:有两个名为 Ubuntu 的 Ubuntu 发行版,但在注册表中具有不同的 GUID/UUID:

wsl -l -v
  NAME      STATE           VERSION
* Ubuntu    Running         2
  Ubuntu    Stopped         2

PS C:\Users\me-user> reg query hkcu\software\microsoft\windows\currentversion\lxss

HKEY_CURRENT_USER\software\microsoft\windows\currentversion\lxss
    DefaultVersion    REG_DWORD    0x2
    DefaultDistribution    REG_SZ    {c329c2ee-fd20-4986-873a-351737eaf399}

HKEY_CURRENT_USER\software\microsoft\windows\currentversion\lxss\AppxInstallerCache
HKEY_CURRENT_USER\software\microsoft\windows\currentversion\lxss\{97307d71-8998-42a4-9600-ff372b6ec1ee}
HKEY_CURRENT_USER\software\microsoft\windows\currentversion\lxss\{c329c2ee-fd20-4986-873a-351737eaf399}

如果你注意到第一个有值,但是第二个没有:

第一:

PS C:\Users\me-user> reg query "hkcu\software\microsoft\windows\currentversion\lxss\{97307d71-8998-42a4-9600-ff372b6ec1ee}" /v DistributionName

HKEY_CURRENT_USER\software\microsoft\windows\currentversion\lxss\{97307d71-8998-42a4-9600-ff372b6ec1ee}
    DistributionName    REG_SZ    Ubuntu

PS C:\Users\me-user> reg query "hkcu\software\microsoft\windows\currentversion\lxss\{97307d71-8998-42a4-9600-ff372b6ec1ee}"

HKEY_CURRENT_USER\software\microsoft\windows\currentversion\lxss\{97307d71-8998-42a4-9600-ff372b6ec1ee}
    State    REG_DWORD    0x1
    DistributionName    REG_SZ    Ubuntu
    Version    REG_DWORD    0x2
    BasePath    REG_SZ    C:\Users\me-user\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState
    Flags    REG_DWORD    0xf
    DefaultUid    REG_DWORD    0x0
    PackageFamilyName    REG_SZ    CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc

第二个

PS C:\Users\me-user> reg query "hkcu\software\microsoft\windows\currentversion\lxss\{c329c2ee-fd20-4986-873a-351737eaf399}" /v DistributionName

HKEY_CURRENT_USER\software\microsoft\windows\currentversion\lxss\{c329c2ee-fd20-4986-873a-351737eaf399}
    DistributionName    REG_SZ    Ubuntu

(无其他键/值)

我注意到默认 wsl 设置为第二个c329c2ee-fd20-4986-873a-351737eaf399

DefaultDistribution REG_SZ {c329c2ee-fd20-4986-873a-351737eaf399}

将默认分布更改为“第一个”是否安全,{97307d71-8998-42a4-9600-ff372b6ec1ee}以便在 Windows 终端中尝试打开它时不再看到错误消息?

另请参阅: https://github.com/microsoft/WSL/issues/7998

Cannot create a file when that file already exists.

[process exited with code 4294967295 (0xffffffff)]
You can now close this terminal with Ctrl+D, or press Enter to restart.

相关内容