0

我对VS Code 和 WSL 远程扩展有疑问。在我的机器上,Windows Defender 防火墙阻止了node。我没有足够的权限来取消阻止它,但管理员创建了排除文件夹,根据他们所说的“我可以复制我需要的所有内容并且它被排除在 Windows Defender 防火墙检查之外”。所以我在那里复制了 VS Code,但我还需要在那里复制带有 Debian Linux 的软件包并将其链接到新路径。

但是我找不到这条到 Debian 的路径存储在哪里,以及如何更改它。对我来说,该文件夹现在位于 C:\Users\{username}\AppData\Local\Packages\TheDebianProject.DebianGNULinux_...并且需要移动到C:\ExcludedFolder

这可能吗?非常感谢您的回复。

4

1 回答 1

0

首先,您可能能够以稍微不同的方式解决您的防火墙问题。我不能肯定地说(事情总是在变化),但根据我的经验,防火墙/防御者只检测和阻止 WSL1 应用程序。这至少对于恶意软件/防病毒检测是正确的,但我相信它也会扩展到防火墙功能。另一方面,如果没有,那么将实例移动到其他目录可能对您的问题没有帮助。

您可以使用wsl -l -v. 如果它是版本 1,那么让我们尝试将其转换为 2(如果您的系统具有该权限)。

无论您只是转换实例还是移动它,这里的第一步都是相同的:

  • 首先,退出您的 WSL/Debian 实例,然后发出wsl --shutdown. 您可以从 PowerShell、CMD 或开始菜单执行此操作;但我将假设您在 PowerShell 中的其余说明。

  • 在 PowerShell 中运行以下命令:

    cd <your exclusion directory>
    mkdir wsl\images
    cd wsl\images
    wsl --export Debian 2021-11-02_Debian_backup.tar
    
  • 假设您的实例是 WSL1 并且您想尝试转换为 WSL2,那么您至少现在有一个备份。运行wsl --set-version Debian 2将其转换为 WSL2。然后启动它,看看node行为方式是否有任何差异。当然,您始终可以使用 将其转换回来wsl --set-version Debian 1

  • 如果您仍需要尝试移动它:

    cd <your exclusion directory>\wsl
    mkdir instances\debian_exclude
    wsl --import debian_exclude instances\debian_exclude images\2021-11-02_Debian_backup.tar --version 2
    wsl -d debian_exclude
    

    请注意,您当然可以随意调用文件名和目录。另请注意,您可以在导入时更改版本号。在那里选择您需要的任何 WSL 版本。

  • 您现在应该在一个新的 Debian 实例中,但默认情况下您将以 root 身份运行。您需要通过以下方式创建导入实例的默认用户/etc/wsl.conf

    [user]
    default=<your_wsl_username>
    
  • 退出实例,运行另一个wsl --shutdown,然后重新启动。您现在应该以普通用户身份运行。在那里再试node一次,看看新位置是否允许将其从防火墙规则中排除。

  • 如果一切都按预期工作,您可以wsl --unregister Debian删除旧实例。请注意,这将删除实例中的所有文件,因此请确保您的备份和新实例首先拥有您需要的一切。

  • 取消注册旧实例应该将新实例设置为您的默认值,但如果没有,您可以使用wsl --set-default debian_exclude.

于 2021-11-02T20:15:11.293 回答