我遇到了一个奇怪的情况。除非我以提升的(管理员)权限执行此操作,否则我无法从命令行或 powershell 调用 wsl。我认为在升级到 WSL2(例如,允许运行 Docker)之前我可以这样做。
事情就该是这样吗?
还是因为我意外地以管理员身份安装/升级了它?
有没有办法让它以非管理员身份工作(而不必重新安装整个东西)?
谢谢。
PS. C:\Windows\system32 位于系统路径中,也位于非提升路径中。
dir
但是,以非提升权限的用户身份从命令行执行命令时,system32 目录下的 wsl.exe 是不“可见的” 。
仅以管理员身份运行时才从命令行可见。
奇怪的是,我可以通过从文件资源管理器双击来运行 wsl.exe(无需提升权限)。
有任何想法吗?
答案1
您是否为您的主要用户运行备用终端应用程序,但在启动提升/管理员终端时可能使用“普通”Windows 控制台?
自从你:
- 能
wsl.exe
从文件资源管理器中查看和启动C:\Windows\System32
,但是...... - 不能在 PowerShell 或 CMD 中
wsl.exe
发出命令时查看dir
C:\Windows\System32
最可能的原因(但可能不是唯一的原因)是您正在 32 位终端中运行。
dir C:\Windows\Sysnative\wsl.exe
在您现有的终端/shell 中尝试。如果您wsl.exe
使用该方法找到,则您正在运行 32 位。
如果是这种情况,我建议切换到 Windows 终端(可从 Microsoft Store 安装)。它是:
- 传统 Windows 控制台的现代替代品
- 由微软积极开发
- 功能丰富(可以说是 Windows 上所有终端应用程序中功能最丰富的,甚至可能是 Linux 上的)
- 开源(Github 仓库)
- 可以自动检测任何 WSL、PowerShell、CMD、Git Bash 等安装并自动为其创建配置文件。
- 也许在这种情况下最重要的是64位:-)