右键菜单出现两个“Open with Code”是注册表重复注册所致,需清理HKEY_CLASSES_ROOT下Directory\Background\shell\OpenWithCode、Directory\shell\OpenWithCode和*\shell\OpenWithCode三处冗余项,仅保留command指向当前有效code.cmd的条目。

右键菜单出现两个“Open with Code”是注册表重复注册导致的
这不是 VSCode 自己加的,而是多次安装/卸载、混用 Stable/Insiders 版本、或手动导入过 add-vscode-icon.reg 等脚本后,HKEY_CLASSES_ROOT 下残留了多个同名但路径不同或逻辑重叠的项。Windows 资源管理器不校验唯一性,只要匹配 shell\OpenWithCode 或 shell\VSCode 就全渲染出来。
必须清理的三个注册表路径(只删冗余项)
打开 regedit,按 Ctrl+F 搜索 OpenWithCode,重点检查以下三处——每处都可能独立存在、且 command 值指向已删除的旧安装路径:
HKEY_CLASSES_ROOT\Directory\Background\shell\OpenWithCodeHKEY_CLASSES_ROOT\Directory\shell\OpenWithCodeHKEY_CLASSES_ROOT\*\shell\OpenWithCode
逐个展开看:@ 值是否显示“Open with Code”,command 子项下的默认值是否指向一个真实存在的 code.cmd(不是 Code.exe)。路径里少引号、多空格、反斜杠写成正斜杠(/vs/),都会让命令静默失败。
删错注册表项会导致右键菜单异常
别碰 HKEY_CLASSES_ROOT\vscode 或 HKEY_CURRENT_USER\Software\Classes\AppUserModelId\Microsoft.VisualStudioCode 这类高级关联项;更不要动 MuiCache 全局缓存——它影响整个系统的右键菜单显示逻辑,误删可能让其他应用右键也出问题。
真正要动手的只有上面三个 OpenWithCode 路径,且每次只删一个,删完立刻在任务管理器里重启 explorer.exe 验证效果。保留那个 command 值里路径正确、带引号、指向当前安装目录下 bin\code.cmd 的项即可。
为什么必须用 code.cmd 而不是 Code.exe
Code.exe 是 GUI 主程序,不初始化 shell 环境、不处理工作区参数、不转发给已有实例,直接调用容易卡住或无响应;code.cmd 才是官方推荐的命令行入口,它会自动加载 --user-data-dir、解析 --folder-uri、并确保单实例模式正常工作。
如果你删完注册表,右键仍没反应,大概率是 command 里写的路径错了——比如还指着 C:\Users\xxx\AppData\Local\Programs\Microsoft VS Code Insiders\Code.exe,而你已经卸载了 Insiders 版。
shell\OpenWithCode 路径,确认 command 值指向有效的 code.cmd,其余一律不动。否则修好右键,可能顺手把整个资源管理器右键菜单搞崩。


















