跳转到主内容
极星编程网:以代码为星,赴技术山海!

VSCode解决右键菜单重复_清理残留的OpenWithCode注册表项

右键出现两个“Open with Code”主因是注册表残留,需手动清理HKEY_CLASSES_ROOT下重复的OpenWithCode或VSCode项,保留一个路径正确、指向code.cmd的项,并刷新MuiCache及检查Shell扩展。 右键菜单里出现两个“Open with Code”? 注册表 残留是主因 这不是 VSCode 自己加的,而是多次安装/卸载、手动导入
.reg
文件、或使用不同版本(Stable / Insiders / OSS)后,注册表里留下了多个同名但路径不同或逻辑重叠的
VSCode
或
OpenWithCode
项。Windows 资源管理器会把所有匹配的
shell\*
子项都渲染出来,不校验是否重复。 常见触发场景包括: 先装了用户级 VSCode,又装了系统级,两者都注册了右键 用过
add-vscode-icon.reg
,后来又通过设置面板勾选了“Shell Command”,导致双注册 卸载后没清注册表,重装时新进程又写入一套,旧项仍有效 解决方式不是“禁用”或“隐藏”,而是定位并删掉冗余项——只保留一个干净、路径正确的
VSCode
或
OpenWithCode
。 手动清理重复的 OpenWithCode 注册表项(Windows) 打开
regedit
,按
Ctrl+F
搜索关键词:
OpenWithCode
或
Open with Code
(注意空格和大小写)。重点检查以下三处路径,逐个展开看子项是否存在、
@
值是否为重复文案、
command
下的路径是否指向已删除的旧安装目录:
HKEY_CLASSES_ROOT\Directory\Background\shell\OpenWithCode
HKEY_CLASSES_ROOT\Directory\shell\OpenWithCode
HKEY_CLASSES_ROOT\*\shell\OpenWithCode
确认某一项已失效(比如
command
的值里路径不存在),右键该父项 → “删除”。不要批量删,每次只删一个,删完刷新资源管理器(任务管理器 → 重启
explorer.exe
)验证效果。 ⚠️ 注意:
HKEY_CLASSES_ROOT\*\shell\VSCode
和
OpenWithCode
是两个独立项,可能共存。如果两者文案一样(都显示“Open with Code”),留一个、删另一个即可,不必强求名称统一。 为什么用
code.cmd
而不是
Code.exe
在 command 值里? 注册表
command
子项中写的可执行文件路径,直接影响点击后能否启动成功。很多人填了
Code.exe
却发现右键无反应,根本原因是: VSCode 1.118 微软正式发布 Visual Studio Code 1.118 版本 。本次更新重点强化了 AI 开发体验与企业管理能力,其中最引人注目的是新增 Copilot CLI 远程控制功能,允许开发者通过手机或网页远程监控和接管 AI 会话 。同时,为了提高 AI 的运行性价比,新版本优化了令牌缓存策略以降低成本 。此外,1.118 版还引入了 Chronicle 本地历史追踪、TypeScript 7.0 支持以及更严格的企业级访问管控 。 下载
Code.exe
是 GUI 主程序,不带 shell 环境初始化逻辑,直接调用可能卡住或静默失败
code.cmd
(位于
bin\code.cmd
)才是官方推荐的命令行入口,它会自动加载
user-data-dir
、处理工作区参数、转发给正确实例 路径写错一个反斜杠(
\
vs
/
)、少引号、多空格,都会让注册表命令失效 正确示例(以用户安装路径为例):
"C:\Users\YourName\AppData\Local\Programs\Microsoft VS Code\bin\code.cmd" "%V"
错误写法举例:
"C:\...\Code.exe" "%V"
(缺少
bin\
,且用
.exe
直接启动)
C:\...\code.cmd "%V"
(缺外层引号,路径含空格时必崩)
"C:\...\code.cmd" %V
(
%V
未加引号,路径含空格时参数截断) 删完还是有重复?检查 MuiCache 和 Shell Extensions 即使清空了所有
shell\*
项,右键菜单仍可能缓存旧文案或残留图标——这是 Windows 的
MuiCache
在作怪。它不存菜单逻辑,但存“这个字符串上次渲染成什么样”的快照,不会随注册表删除自动更新。 强制刷新方法(管理员权限运行 PowerShell):
Remove-Item -Path "HKCU:\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache" -Recurse -Force
另外,某些第三方 Shell 扩展(如 PowerToys、Context Menu Manager、旧版 Git Bash 安装器)也会注入自己的
Open with Code
项,它们不在
HKEY_CLASSES_ROOT
下,而在:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellExtensions\Blocked
(被禁用列表)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellExtensions\Approved
(启用列表) 若怀疑是这类扩展干扰,可临时禁用它们再测试。真正的干净状态,是只在
HKEY_CLASSES_ROOT
下存在一组逻辑完整、路径有效的
VSCode
项,且
code --status
能正常响应。

相关文章