右键出现两个“open with code”是因注册表中存在多个同名但路径不同的openwithcode项,需在regedit中搜索并删除冗余项,确保command值指向code.cmd而非code.exe,并重启explorer.exe生效。

右键出现两个“Open with Code”怎么定位冗余项
根本原因是多次安装/卸载、混用 Stable/Insiders 版本,或手动导入 add-vscode-icon.reg 后又通过设置面板开启 Shell Command,导致注册表里堆了多个同名但路径不同、逻辑重叠的 OpenWithCode 或 VSCode 项。Windows 资源管理器不校验重复,只按注册表结构一股脑渲染出来。
必须手动搜索确认,不能靠猜:
- 打开
regedit,按Ctrl+F搜索OpenWithCode(注意大小写和空格) - 重点检查三处路径:
HKEY_CLASSES_ROOTDirectoryBackgroundshellOpenWithCode、HKEY_CLASSES_ROOTDirectoryshellOpenWithCode、HKEY_CLASSES_ROOT*shellOpenWithCode - 逐个展开,看每个项下的
@值是否显示为“Open with Code”,再点开command子项,检查@值里的路径是否存在(比如指向已删除的C:UsersXXXAppDataLocalProgramsMicrosoft VS CodeCode.exe)
删注册表前必须终止所有 Code 进程
如果 Code.exe、Code Helper.exe(含 GPU/Renderer 后缀)、Code - Insiders.exe 仍在运行,对应注册表项可能被锁住,删不掉或删不全——你看到“删除成功”,其实只是表面,重启资源管理器后菜单照旧。
务必先做这三件事:
- 打开任务管理器 → 切换到“详细信息”页 → 按名称排序,结束所有含
Code的进程 - 删注册表项前,在
regedit中右键要删的项 → “导出”,保存为vscode-shell-backup.reg备用 - 确认你要删的是
OpenWithCode或VSCode,不是VisualStudio或泛用词如node、electron—— 后者误删可能影响其他应用
command 里为什么必须用 code.cmd 而不是 Code.exe
很多人把 command 的值改成 "C:path oCode.exe" "%V",结果右键点击没反应。这不是注册表写错了,是启动方式不对。
Code.exe 是 GUI 主程序,不带 shell 初始化逻辑;而 code.cmd(位于安装目录 bincode.cmd)才是官方设计的命令行入口,它会自动处理:
- 加载正确的
--user-data-dir - 转发工作区参数(如
"%V")给已有实例或新建实例 - 避免因环境变量缺失导致静默失败
所以 command 的 @ 值应写成:"C:path oMicrosoft VS Codeincode.cmd" "%V"。路径中所有反斜杠需双写(\),且整个路径必须用英文双引号包裹,末尾空格也不能多。
删完不刷新 explorer.exe 就等于白干
注册表改了,但资源管理器缓存没清,右键菜单不会更新。别等重启电脑,直接在任务管理器 → “详细信息”页 → 找到 explorer.exe → 右键 → “重新启动”。几秒后桌面和文件夹右键就会立即生效。
特别注意:HKEY_CURRENT_USERSoftwareClassesLocal SettingsSoftwareMicrosoftWindowsShellMuiCache 这个路径也会影响右键文字显示(比如中文乱码),但它属于系统级 UI 缓存,不建议手动删——万一删错,可能波及其他应用的右键文案。优先保证 OpenWithCode 项唯一、command 路径正确、explorer.exe 重启到位,95% 的问题就解决了。











