You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows 11 Pro普通权限CMD无法访问System32\OpenSSH目录及ssh.exe,仅管理员权限CMD可用的问题咨询

普通权限CMD无法访问System32\OpenSSH?问题分析与解决办法

先理清楚你的场景:

  • 系统:Windows 11 Pro 21H2(内部版本22000.978)
  • 已安装OpenSSH并添加到系统Path,但普通权限CMD下:
    • 能通过explorer .看到System32里的OpenSSH文件夹
    • 执行cd OpenSSH提示路径不存在,调用ssh也提示未找到
  • 但管理员权限CMD下一切正常,where ssh能正确返回C:\Windows\System32\OpenSSH\ssh.exe

问题根源:Windows文件系统重定向

这是典型的**文件系统重定向(File System Redirector)**导致的问题。Windows为了兼容32位程序,会对32位进程访问C:\Windows\System32的请求做自动重定向,把它指向C:\Windows\SysWOW64(专门存放32位系统文件的目录)。

而你的OpenSSH是64位版本,实际安装在64位专属的C:\Windows\System32目录里。普通用户默认打开的CMD如果是32位的,就会被重定向到SysWOW64,自然看不到真正的System32里的OpenSSH文件夹;而explorer.exe是64位程序,所以它能直接访问到真实的System32目录,这就是为什么资源管理器能看到但CMD不行的原因。管理员打开的CMD通常是64位的,所以不受重定向影响,能正常访问。

你可以在CMD里执行这条命令验证自己的CMD位数:

echo %PROCESSOR_ARCHITECTURE%

如果输出是x86,说明是32位CMD;输出AMD64则是64位CMD。

解决方案

这里给你几个实用的解决办法,按推荐程度排序:

1. 直接打开64位版本的CMD

不要用默认的快捷方式打开CMD,而是通过完整路径启动64位版本:

C:\Windows\System32\cmd.exe

普通用户打开这个64位CMD后,就能正常执行cd OpenSSH和调用ssh命令了,和管理员权限下的表现一致。

2. 用Sysnative别名访问64位目录(针对32位CMD)

如果你必须使用32位CMD,可以用Windows提供的Sysnative特殊别名来绕过重定向,直接访问64位的System32目录:

  • 进入OpenSSH目录:
    cd C:\Windows\Sysnative\OpenSSH
    
  • 直接调用ssh命令:
    C:\Windows\Sysnative\OpenSSH\ssh.exe
    

3. 调整环境变量(可选)

C:\Windows\Sysnative\OpenSSH添加到系统环境变量的Path中,这样32位CMD就能直接找到ssh.exe,无需每次都输入完整路径。不过这个方案不如前两个直接,除非你经常需要在32位CMD里使用ssh。

内容的提问来源于stack exchange,提问作者Thebluedragon

火山引擎 最新活动