仅当我首先终止 wsl 时,explorer.exe 才会打开

仅当我首先终止 wsl 时,explorer.exe 才会打开

我遇到一个问题,如果我输入explorer.exe .wsl,什么都不会发生,也不会显示任何资源管理器窗口。但是,如果我先wsl -t Ubuntu-18.04在 powershell 中运行并重新运行该命令,资源管理器将按预期打开。是什么原因造成的?我在 Windows 10 1909 上。

编辑:

但是,如果我从 powershell 运行,即使当前 Ubuntu-18.04 会话没有显示,窗口也会显示。

  1. 启动 powershell
  2. wsl
  3. explorer.exe .

答案1

我发现了这个问题。这是因为我使用任务计划程序在设备启动时运行 ssh 守护程序,并且“无论用户是否登录都运行”已打开(这个很重要因为如果它关闭,你就不会遇到这个问题)。我的bat脚本包含

%windir%\System32\bash.exe -c 'sudo /bin/mkdir -p /var/run/sshd'
%windir%\System32\bash.exe -c 'sudo /usr/sbin/sshd -D'

启动sudo /usr/sbin/sshd -D“卡住”的守护进程,导致 explorer.exe 无法以某种方式打开。这实际上导致任何 SSH 进入系统并运行任何 .exe 也不会返回任何输出,例如ssh user@thismachine "powershell.exe Get-Clipboard"

解决此问题的完美方法是:

https://gist.github.com/dentechy/de2be62b55cfd234681921d5a8b6be11#gistcomment-3036911

引用来源,以防被删除:

Another way without Task Scheduler:

    On the WSL put to the end of the /etc/sudoers file the following line:
    %sudo ALL=NOPASSWD: /etc/init.d/ssh start

    Put to the shell:Startup folder bat file with the content:
    powershell.exe "& 'C:\Windows\System32\bash.exe' -c 'sudo /etc/init.d/ssh start'"

That's it!

no sudo promt
no Task Scheduler stuff
no stucking daemon process like sudo /usr/sbin/sshd -D
no WSL window open

相关内容