根本原因是注册表残留:HKEY_CLASSES_ROOT*\shell\OpenWithCode、Directory\shell\OpenWithCode、Directory\Background\shell\OpenWithCode三处路径下存在重复、路径错误或调用Code.exe而非code.cmd的失效项,需逐项验证command值并删除冗余项,删后重启explorer.exe并清理MuiCache及%APPDATA%\Code。

右键菜单里出现多个“Open with Code”、点了没反应、或者卸载后还残留——根本原因不是 VSCode 本身出问题,而是注册表里留了重复、路径错误或已失效的 OpenWithCode 或 VSCode 项。直接删错位置会丢功能,只禁用又不清根,必须精准定位+逐项验证。
哪些注册表路径要重点查?
别盲目搜索整个注册表。VSCode 相关右键项集中在三类 shell 路径下,每类对应不同触发场景:
-
HKEY_CLASSES_ROOT\*\shell\OpenWithCode:对任意文件右键时出现 -
HKEY_CLASSES_ROOT\Directory\shell\OpenWithCode:对文件夹图标右键时出现 -
HKEY_CLASSES_ROOT\Directory\Background\shell\OpenWithCode:对文件夹空白处右键时出现
注意:VSCode(无 With)和 OpenWithCode 是两个独立项,可能共存;也有人手动加过 vscode(全小写),一并纳入检查范围。打开 regedit 后,用 Ctrl+F 搜索这几个关键词,只看匹配到的完整路径,不点进无关子项。
怎么判断哪一项该删?
找到候选项后,不能凭名字删,得验证是否有效。关键看两点:
- 展开该项下的
command子项,双击默认值,看字符串里写的路径是否存在。比如值是"C:\old\path\Code.exe" "%1",但C:\old\path\文件夹已不存在,这项就是死项 - 如果 command 值里调用的是
Code.exe(GUI 主程序),而不是code.cmd(官方推荐命令行入口),大概率点击无响应——这是常见失效原因 - 同一路径下存在多个同名项(如
OpenWithCode和OpenWithCode2),只留一个,其余删掉
删之前,右键该父项 → “导出”,保存为 vscode-shell-backup.reg 备用。每次只删一个,删完立刻在资源管理器中右键测试效果。
删完还要刷新什么?
注册表改了,Windows 不会自动重载右键菜单。必须强制刷新资源管理器上下文缓存:
- 打开任务管理器 → 找到
explorer.exe→ 右键“重新启动” - 如果右键仍显示旧文案(比如还是“Edit with Code”而非你改的新文字),可能是
MuiCache没更新。此时需删HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache下所有含OpenWithCode或VSCode的键值(不要删整个MuiCache,只清相关条目) - 重启后若发现某项图标变白纸,说明
Icon值里的路径不对或引号缺失,回注册表修正即可
最易被忽略的是:删了注册表项,但没清 %APPDATA%\Code。这个目录一旦存在,VSCode 重装后会自动读取它,并把旧右键项重新写回注册表——等于白操作。


















