无法运行WSL命令,VS Code搭配WSL出现Exec Format Error错误
WSL2中运行Windows可执行文件(如code、notepad.exe)出现"Exec format error"的解决方法
问题描述
配置VS Code与WSL2协同工作时,运行code命令触发"Exec format error",同时notepad.exe等Windows原生命令也报相同错误,具体报错信息:
newsofpe@DESKTOP-H6GRFEM:~$ code /mnt/c/Users/Newso/AppData/Local/Programs/Microsoft VS Code/bin/code: 61: /mnt/c/Users/Newso/AppData/Local/Programs/Microsoft VS Code/Code.exe: Exec format error newsofpe@DESKTOP-H6GRFEM:~$ notepad.exe -bash: /mnt/c/WINDOWS/system32/notepad.exe: cannot execute binary file: Exec format error
已排除x86/x64兼容性问题,当前WSL版本信息:
Linux DESKTOP-H6GRFEM 5.15.90.1-microsoft-standard-WSL2 #1 SMP Fri Jan 27 02:56:13 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
解决方法
1. 检查并启用WSL Interop功能
WSL通过interop实现Windows可执行文件的跨系统运行,先确认该功能状态:
- 查看当前interop状态:
cat /proc/sys/fs/binfmt_misc/WSLInterop - 若输出显示
enabled 0,执行命令启用:echo 1 | sudo tee /proc/sys/fs/binfmt_misc/WSLInterop - 若
WSLInterop文件不存在,手动注册:sudo sh -c 'echo ":WSLInterop:M::MZ::/init:" > /proc/sys/fs/binfmt_misc/register'
2. 重置WSL Interop配置
临时启用无效时,重置整个interop规则:
sudo rm /proc/sys/fs/binfmt_misc/WSLInterop sudo sh -c 'echo ":WSLInterop:M::MZ::/init:" > /proc/sys/fs/binfmt_misc/register'
3. 重启WSL服务
服务异常可能导致interop失效,在Windows PowerShell(或CMD)中执行:
wsl --shutdown
重新打开WSL终端后再次测试命令。
4. 验证WSL版本并升级
确保当前发行版为WSL2:
- 查看版本:
wsl -l -v - 若为WSL1,执行升级命令:
wsl --set-version <你的发行版名称> 2
5. 修复Windows WSL组件
打开管理员权限的PowerShell,重新启用WSL相关组件:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
重启电脑后再次尝试运行Windows可执行文件。
6. 重置VS Code Remote-WSL扩展
若code命令仍异常,卸载并重装Remote-WSL扩展:
- 在VS Code扩展面板找到"Remote - WSL",点击卸载
- 重启VS Code后重新安装该扩展,再在WSL终端运行
code .测试
内容的提问来源于stack exchange,提问作者NewsofPE
相关产品推荐
相关产品推荐

