应重点检查HKEY_CLASSES_ROOT\Directory\Background\shell\OpenWithCode、Directory\shell\OpenWithCode和*\shell\OpenWithCode三处路径,逐项核对@值是否重复显示“Open with Code”及command中路径是否存在,删除失效项后需重启explorer.exe并清理%APPDATA%\Code目录以防复现。

右键出现两个“Open with Code”怎么定位冗余项
不是所有叫 OpenWithCode 或 VSCode 的注册表项都该删——Windows 资源管理器会把所有匹配的 shell\* 子项全渲染出来,哪怕路径已失效。真正要找的是那些 command 值指向已卸载路径、或 @ 显示文案重复的项。
重点检查这三处(用 regedit 手动导航,别只靠 Ctrl+F 搜):
-
HKEY_CLASSES_ROOT\Directory\Background\shell\OpenWithCode—— 文件夹空白处右键 -
HKEY_CLASSES_ROOT\Directory\shell\OpenWithCode—— 文件夹图标上右键 -
HKEY_CLASSES_ROOT\*\shell\OpenWithCode—— 单个文件右键
每个路径点开后看两件事:@ 值是不是显示“Open with Code”;command\@ 里写的路径是否存在(比如 "C:\Users\Alice\AppData\Local\Programs\Microsoft VS Code\Code.exe" "%V",若该目录已删,这项就是冗余)。
删注册表前必须确认的三件事
删错可能让整个资源管理器右键菜单异常,尤其误删 MuiCache 会影响所有应用。动手前盯住这三点:
- 任务管理器中彻底结束所有
Code.exe、Code Helper.exe、Code - Insiders.exe进程(包括后台进程) - 在
regedit里选中你要删的整项(如OpenWithCode),先点「文件 → 导出」存成vscode-shell-backup.reg备用 - 确认你删的是
OpenWithCode或VSCode,不是VisualStudio或VSCodeOSS(后者是开源版,路径和行为不同)
删完不生效?必须重启 explorer.exe
注册表改了,但资源管理器不会自动刷新右键菜单缓存。常见表现:删了一个项,右键还是两个;或者删完后“Open with Code”直接消失——大概率是删错了位置,或没清缓存。
强制刷新步骤:
- 打开任务管理器(Ctrl+Shift+Esc)
- 找到
Windows Explorer进程 → 右键 → 「重新启动」 - 等桌面图标重绘完成,再测试右键
如果仍不正常,回退到备份的 .reg 文件双击导入,再逐个重试删除顺序。
为什么删了注册表还残留?因为 %APPDATA%\Code 没清
注册表只是触发器,真正决定右键菜单是否“复活”的是用户数据目录。只要 %APPDATA%\Code 还在,VSCode 启动时就会读取它里面的配置,自动把 shell 项重新写回注册表——等于白删。
所以清理右键菜单必须同步做这两件事:
- 删掉
HKEY_CLASSES_ROOT下冗余的OpenWithCode或VSCode项 - 删掉
%APPDATA%\Code目录(或至少清空其下的User\settings.json和state子目录)
否则下次装 VSCode,旧右键项会原样回来。这不是 bug,是设计使然:VSCode 把右键注册当作“用户偏好”来持久化。


















