必须用%V:文件夹右键菜单需用%V获取路径,%1无效;%V须双引号包裹且整个命令字符串也需双引号;路径须指向Code.exe本体,不可用code别名或bin/code脚本;HKEY_CLASSES_ROOT\Directory\shell和\Directory\Background\shell需分别配置。

注册表添加文件夹右键菜单必须用 %V,不是 %1
Windows 文件夹右键菜单的参数传递和文件右键不同:%1 只对单个文件有效,点文件夹图标或空白处时会传空或错误路径;%V 才是系统为目录上下文定义的正确变量,它能稳定拿到当前文件夹的绝对路径。
常见错误是照搬文件关联写法,把 command 值设成 "C:\path\Code.exe" "%1" —— 这会导致右键文件夹后 VS Code 启动但打开空白窗口,甚至报错 Unable to read file。实际应写为:
"C:\Users\Alice\AppData\Local\Programs\Microsoft VS Code\Code.exe" "%V"
-
%V必须被英文双引号包裹,且整个命令字符串也要用双引号包住(路径含空格时尤其关键) - 路径中不能混用中文引号、全角符号,否则注册表导入失败或执行无响应
- 用户版 VS Code 默认装在
%LOCALAPPDATA%\Programs\Microsoft VS Code\Code.exe,系统版在C:\Program Files\Microsoft VS Code\Code.exe,务必确认真实路径
command 值里不能写 code 命令别名
注册表 command 项执行的是 Windows 原生命令行环境,不加载 shell 的 PATH,也不识别你终端里可用的 code 别名或脚本。写 "code" "%V" 或 "code.cmd" "%V" 一定会失败,报错 'code' is not recognized as an internal or external command。
必须直接指向可执行文件本体 Code.exe,而不是 code 命令行包装器(它通常在 bin/ 目录下,但只是 shell 脚本,Windows 注册表无法执行)。
- 正确路径示例:
"%LOCALAPPDATA%\Programs\Microsoft VS Code\Code.exe" - 错误路径示例:
"%LOCALAPPDATA%\Programs\Microsoft VS Code\bin\code"(这是 Linux/macOS 脚本,Windows 下无效) - 如果路径含空格但没加外层双引号,命令会被截断,VS Code 可能启动但不传参
两个注册表位置决定右键触发场景
要让“用 VS Code 打开”出现在不同位置,得往不同注册表路径写:
-
HKEY_CLASSES_ROOT\Directory\shell\vscode:右键点击**文件夹图标本身**时出现(比如在桌面点一个文件夹图标) -
HKEY_CLASSES_ROOT\Directory\Background\shell\vscode:右键点击**文件夹内空白区域**时出现(比如进入 D:\project 后在空白处右键)
只配其中一个,就只能在对应场景生效。多数人需要两者都配,否则容易以为“配置失败”。另外,Icon 值不是必需项,但填了能显示 VS Code 图标,值设为 Code.exe 路径即可(如 "%LOCALAPPDATA%\Programs\Microsoft VS Code\Code.exe")。
插件开发的上下文菜单和系统右键无关
VS Code 插件通过 package.json 的 contributes.menus 添加的是编辑器内部的右键菜单(即你在编辑器里选中文本、右键弹出的菜单),和 Windows 资源管理器的右键菜单完全隔离。想在资源管理器里加菜单项,插件做不到——必须改注册表或用第三方工具(如 ContextMenuForWindows11)。
插件菜单的可见性由 when 条件控制,比如 resourceFilename =~ /\.js$/ 表示仅在 JS 文件上显示;但这类配置不影响系统级右键行为,也无需管理员权限。
真正容易混淆的点是:VS Code 安装时勾选的“Add to PATH”或“Open with Code”选项,其实只向 HKEY_CURRENT_USER 写注册表,且常只覆盖文件类型(如 .txt),不处理文件夹上下文;重装或切换用户后极易失效。手动写入 HKEY_CLASSES_ROOT 更稳定,但需注意 UAC 提权和双引号细节。


















