
最近一直有朋友问我每次想用 VSCode 打开一个项目文件夹都得先打开 VSCode再在文件菜单里找“打开文件夹”或者把文件夹拖到图标上实在有点啰嗦。要是能在文件夹或文件上右键直接出现一个“通过 Code 打开”的选项那效率能高不少。这个需求听起来小但实际做起来涉及右键菜单的底层原理、不同操作系统各自的实现方式还有各种“加了之后想删掉”的后续维护问题。这篇我就把自己的完整操作记录和经验整理出来覆盖 Windows 和 macOS 两边也把右键菜单清理、Win11 经典菜单恢复这几个高频关联问题一并讲清楚。如果你是刚接触 VSCode 的开发者或者平时每天要在多个项目之间切换、受够了反复点击图标的老手又或者只是想把右键菜单整理得更顺手的人这篇文章都适合你。内容会从原理讲到实操再给出现成可用的注册表脚本和 Automator 配置文末的常见问题部分基本能覆盖你踩坑时的大部分场景。1. 核心原理右键菜单到底是怎么工作的1.1 Windows 右键菜单的存储位置与注册表原理Windows 的资源管理器右键菜单本质上就是系统通过查询注册表里的特定键值决定在用户点击鼠标右键时显示哪些命令。这个机制从 Win95 时代延续至今虽然 Win11 换成了紧凑菜单样式但底层逻辑没变。注册表里跟右键菜单有关的位置主要有两处一是HKEY_CLASSES_ROOT\*\shell它管的是所有文件类型的右键菜单二是HKEY_CLASSES_ROOT\Directory\shell和HKEY_CLASSES_ROOT\Directory\Background\shell前者管的是右键点文件夹时的菜单后者管的是在文件夹窗口空白处右键时的菜单。除了HKEY_CLASSES_ROOT还有一个HKEY_CURRENT_USER\Software\Classes的优先级更高。对当前用户生效的右键菜单推荐往HKEY_CURRENT_USER\Software\Classes下面写因为不需要管理员权限也不会影响系统其他用户。很多软件安装时喜欢往HKEY_CLASSES_ROOT直接注册结果就是每次装完都要弹 UAC 确认还容易把系统级的菜单搞乱。后面我给的脚本会同时覆盖这两种方式的取舍推荐优先用当前用户级注册稳妥又好维护。每个右键菜单项在注册表里就是一个子键子键的名就是菜单上显示的文字子键下面可以通过Icon指定图标通过Command子键指定点击后要执行的程序路径。如果想要菜单项只在按 Shift 时才显示可以在键值里加Extended。理解了这三个关键点你就能根据软件需求自己改出任何形态的菜单项而不是只能依赖网上那些现成工具。1.2 macOS 右键菜单访达扩展的工作原理macOS 的右键菜单跟 Windows 完全不同它不是靠维护一个全局注册表容器而是通过“访达扩展”(Finder Extension)、“快速操作”Quick Actions、“服务”Services这些机制来实现。当你在访达里右键点击文件或文件夹时系统会去加载已启用的扩展其中很多来自 Automator 工作流或“快捷指令”App。想要在右键菜单里加“用 VSCode 打开”本质上是注册一个能够接收文件路径作参数的服务然后让访达调用 VSCode 来打开这个路径。因为 macOS 没有 Windows 那种“注册表编辑器直接改一个键”的直观操作很多人觉得无从下手。其实最简单的路径是安装 VSCode 时它会自动往访达的服务菜单里注册一个“打开文件夹”但版本不同可能有时失效。所以我会介绍两种更可控的方式一是重新配置系统服务二是用 Automator 创建自己的快速操作。创建之后这个操作会出现在右键菜单的“快速操作”子菜单里使用起来跟 Windows 的原生感还是有一些差别但实际效果足够可靠。1.3 为什么我更推荐用命令而不是直接去改注册表说到添加右键菜单网上最流行的方案是“下载一个 .reg 文件双击导入”确实简单。但我在实际维护几十台电脑后越来越倾向于用命令行和脚本的方式。原因有三个第一.reg 文件双击导入的瞬间没有办法看到执行细节一旦键路径写错可能把整个shell分支搞乱排查起来很麻烦第二我们需要同时添加“文件右键”“文件夹右键”“文件夹背景右键”三个入口用脚本统一写可以保证命令一致之后卸载时也只需要运行一段清理代码第三命令行方式方便放进 Git 仓库管理New 一台电脑就能一键执行不必到处找小工具。另外VSCode 安装包里自带了code命令行工具安装时勾选“添加到 PATH”后系统就有一个code命令可以调用。我们在注册表里执行的命令本质上也就是用code命令加参数而已。了解这层关系之后不管以后想换成其他软件比如 Sublime Text、Cursor都只要改命令行的路径就行。2. 实操Windows 系统添加“用 VSCode 打开”的完整步骤2.1 先确认 VSCode 安装路径与命令行工具在动手之前第一件事是确认 VSCode 装在哪以及code命令是否生效。打开 PowerShell运行where.exe code如果能看到类似C:\Users\你的用户名\AppData\Local\Programs\Microsoft VS Code\bin\code.cmd的路径说明命令行工具已经配置好了。如果提示找不到可以直接到 VSCode 安装目录下的bin文件夹里看一眼里面有code.cmd和codePowerShell 脚本。我们后续用的命令路径推荐直接指向code.cmd这样在注册表里执行时不会因为环境变量差异而出现问题。需要特别注意的是VSCode 现在的默认安装路径分两种用户安装版一般装在C:\Users\用户名\AppData\Local\Programs\Microsoft VS Code系统安装版一般装在C:\Program Files\Microsoft VS Code。如果在公司电脑上没有管理员权限几乎都是用户安装版注册脚本里要把这个路径写对。你可以在脚本中写死路径但我会在脚本前面加上一段自动探测的逻辑省得每次换电脑都要手动改路径。2.2 通过安装时自带的“添加到右键菜单”选项最朴素的做法如果是新装 VSCode最省事的办法是安装过程中勾选 “将“通过 Code 打开”操作添加到文件或目录的上下文菜单” 这一项。这是一个官方提供的完整选项勾上之后Windows 右键菜单就会自动出现“通过 Code 打开”和“通过 Code 打开文件夹”两个入口。但很多人在安装时为了图快一路点下一步把它漏掉了或者当时没勾选后来又要补上。这种时候并不需要重装在注册表里补上对应的键即可或者重新运行安装程序选择“修改”勾上这个组件就能恢复。不过这个官方选项有一个问题它默认只加在“文件夹的右键菜单”和“文件夹背景的右键菜单”文件本身比如一个 .txt、.js右键时不一定有“通过 Code 打开”。如果想在单个文件上右键直接交给 VSCode 打开通常还得靠手动注册一个*通配符的菜单项。所以从覆盖范围来说手动注册更完整能保证无论你右键的是文件、文件夹还是窗口空白处都能一口直达 VSCode。2.3 手动修改注册表最通用含管理员权限处理下面给出一段我一直在用的注册表脚本保存为add-vscode-rightkey.reg双击导入即可。这段脚本包含了文件右键、文件夹右键、文件夹背景右键三个入口命令都指向code命令行工具。如果你担心code命令的路径有问题可以把手动写的完整路径替换进去。Windows Registry Editor Version 5.00 ; 文件右键菜单任何文件上右键 [HKEY_CURRENT_USER\Software\Classes\*\shell\VSCode] 通过 Code 打开 IconC:\\Users\\你的用户名\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe [HKEY_CURRENT_USER\Software\Classes\*\shell\VSCode\command] \C:\\Users\\你的用户名\\AppData\\Local\\Programs\\Microsoft VS Code\\bin\\code.cmd\ \%1\ ; 文件夹右键菜单右键文件夹 [HKEY_CURRENT_USER\Software\Classes\Directory\shell\VSCode] 通过 Code 打开文件夹 IconC:\\Users\\你的用户名\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe [HKEY_CURRENT_USER\Software\Classes\Directory\shell\VSCode\command] \C:\\Users\\你的用户名\\AppData\\Local\\Programs\\Microsoft VS Code\\bin\\code.cmd\ \%1\ ; 文件夹背景右键菜单在文件夹窗口空白处右键 [HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\VSCode] 通过 Code 打开 IconC:\\Users\\你的用户名\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe [HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\VSCode\command] \C:\\Users\\你的用户名\\AppData\\Local\\Programs\\Microsoft VS Code\\bin\\code.cmd\ \%1\如果你希望菜单显示为“在终端中打开”再额外执行命令也可以把command改成cmd /k code %1但一般没必要。注意上面脚本里的%1是要传给 VSCode 的文件或文件夹路径注册表自动会带上引号所以我们在%1外面又加了一层转义引号防止路径里有空格。如果是没有管理员权限的办公电脑使用HKEY_CURRENT_USER\Software\Classes完全可行不需要 UAC 弹窗。要是你确实想对所有登录用户生效可以把HKEY_CURRENT_USER\Software\Classes换成HKEY_CLASSES_ROOT但是需要管理员权限打开注册表编辑器而且后续卸载也要记得清理。我的经验是个人电脑用当前用户级就够了既安全又容易清理不会影响别人。导入后按理说立刻生效。如果没生效打开任务管理器重启“Windows 资源管理器”进程。方法是在任务管理器里找到“Windows 资源管理器”右键选择“重新启动”。这一步十有八九能解决新注册菜单项不刷新的问题。2.4 更聪明的做法用批处理脚本自动添加和卸载.reg文件虽然好用但路径写死意味着换电脑就要改。我在自己的工具仓库里放了一个vscode-rightkey.bat做的事情是先自动识别code.cmd的位置再调用reg.exe写入对应键值。这样不管是新电脑还是给别人配置运行一次就搞定。脚本核心逻辑大致如下echo off setlocal enabledelayedexpansion set VSCodeBin where code.cmd nul 2nul set VSCodeBincode.cmd if not defined VSCodeBin ( if exist %LocalAppData%\Programs\Microsoft VS Code\bin\code.cmd ( set VSCodeBin%LocalAppData%\Programs\Microsoft VS Code\bin\code.cmd ) else if exist %ProgramFiles%\Microsoft VS Code\bin\code.cmd ( set VSCodeBin%ProgramFiles%\Microsoft VS Code\bin\code.cmd ) ) if not defined VSCodeBin ( echo 未找到 VSCode 命令行工具请确认已安装并勾选“添加到 PATH”。 pause exit /b 1 ) reg add HKCU\Software\Classes\*\shell\VSCode /ve /d 通过 Code 打开 /f reg add HKCU\Software\Classes\*\shell\VSCode /v Icon /d %LocalAppData%\Programs\Microsoft VS Code\Code.exe /f reg add HKCU\Software\Classes\*\shell\VSCode\command /ve /d \%VSCodeBin%\ \%1\ /f rem 文件夹和背景菜单同理略 echo 添加成功正在重启资源管理器... taskkill /f /im explorer.exe nul start explorer.exe脚本里用了taskkill重启资源管理器这一步会让打开的文件夹窗口全部关闭。如果电脑上有没保存的东西先保存一下。我自己用的时候更倾向于不自动重启而是提示用户手动重启更稳妥。在批量运维时这个脚本配合组策略或计划任务都很方便比让每个人双击 .reg 更可靠。3. macOS 系统添加右键菜单快捷入口3.1 安装 VSCode 后自动生成的访达快速操作macOS 用户在安装 VSCode 后其实系统已经默认注册了一个服务右键点击文件夹滚动到“服务”子菜单能看到“新建位于文件夹位置的终端窗口”这类系统自带项但 VSCode 的不一定出现。要想启用 VSCode 自带的服务可以先打开 VSCode按CmdShiftP输入shell command选择“在 PATH 中安装 code 命令”。这会安装code命令行工具到/usr/local/bin或者~/.local/bin。之后在访达里右键文件夹如果能看到“在 VS Code 中打开”就说明已经生效了。不同版本 VSCode 这一项的表现会有差异有时候会显示在“快速操作”里有时候在“服务”里。如果在右键菜单里找不到可以到“系统设置”的“隐私与安全性”的“扩展”里检查 VSCode 的访达扩展是否被启用了。这一步经常被忽略实际上很多“右键菜单不见了”的问题都出在这里。3.2 使用 Automator 或“快捷指令”自定义“用 VSCode 打开”如果系统自带的服务不稳定或者你想让右键菜单更可控推荐用 Automator 创建一个“快速操作”。打开 Automator聚焦搜索就能找到选择“快速操作”工作流程接收当前设置为“文件夹”或“文件”都可以位于“访达”中。左侧搜索“运行 Shell 脚本”拖到右侧编辑区。脚本内容就一行code $如果code命令不在 PATH 里比如从源码包安装的 VSCode就用完整路径比如/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code $保存之后右键菜单里就会多出一个“快速操作”分类里面是你这个动作的名字。你可以给它起个名字叫“用 VSCode 打开”。这个方法最灵活的地方在于你可以在同一脚本里加逻辑比如判断文件类型再决定是否打开或者同时打开多个文件。另外还可以把它加入触控栏或菜单栏但那就偏离右键菜单主题了。3.3 开启“访达扩展”与调整右键菜单的显示顺序有的用户反映创建好 Automator 快速操作后右键菜单里没有直接显示而是要展开“快速操作”子菜单觉得不够方便。目前 macOS 的系统设计就是这样第三方扩展一般都会收纳在“快速操作”子菜单里没法像 Windows 那样直接平铺在顶层。想让它更容易触达可以在“系统设置”“隐私与安全性”“扩展”“访达扩展”里勾选你的快速操作然后拖动排序。不过排序的可定制程度有限只能做到“尽量靠前”。另外还有一个技巧配合“服务”菜单。在 Automator 保存时格式选择“服务”旧版 macOS而不是“快速操作”它会出现在服务菜单里仍然需要展开。说到底 macOS 的右键菜单体验确实不如 Windows 灵活但一旦习惯用“快速操作”就好很多了。我自己的做法是把最常用的“用 VSCode 打开”和“在终端打开”都做成快速操作然后用键盘快捷键触发右键只是保底方案。4. 菜单维护与清理让右键菜单不臃肿4.1 如何排查并删除右键菜单中的无关项AMD Software、网盘等右键菜单里的项目一旦多了不仅看着烦躁新装软件的入口还容易被淹没。我在帮人清理时遇到最多的两个“钉子户”一个是显卡驱动的右键菜单比如 AMD Software另一个是各种网盘、安全软件的“保存到 xxx”悬浮项。这些项目大多也是通过注册表shell分支注册的只要找到对应的子键删除即可。先说 AMD Software。AMD 显卡驱动在右键菜单里添加的项一般注册在HKEY_CLASSES_ROOT\*\shell\ACE或者HKEY_CLASSES_ROOT\Directory\Background\shell\ACE。因为它是系统级安装删除需要管理员权限。我建议不要直接去删注册表因为在部分笔记本机型上下次驱动更新时又会自动加回来。更靠谱的做法是打开 AMD Software在“设置”-“首选项”里找“启用右键菜单”之类的开关直接关掉。这个方法不需要跟注册表搏斗也能避免误删关键键导致驱动异常。网盘的右键菜单清理也是类似逻辑。比如“保存到 360ai 云盘”这类项通常可以在网盘客户端的“设置”里找到“添加右键到菜单”的选项取消勾选即可。如果软件没有提供开关那就只能定位注册表。可以借助工具右键菜单管理工具比如 ShellExView、右键管家来查看和禁用比手动去注册表翻找高效得多。我这不是在推荐具体商业软件而是提醒你遇到顽固项时用工具看清楚 CLSID再决定是否删除。4.2 Win11 恢复经典右键菜单不用每次点“显示更多”Win11 的右键菜单把常用项折叠到了二级层每次都要点“显示更多选项”才能看到完整菜单确实很影响效率。特别是刚在 Win11 里加上 VSCode 的自定义菜单项它默认被收在二级菜单里操作变得很别扭。网上传的“一键恢复经典右键菜单”工具本质就是修改注册表中的一个值HKEY_CURRENT_USER\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32。只要你把默认值设置为空就能让 Win11 右键菜单直接显示完整模式。正确的手动步骤如下按 WinR 输入regedit打开注册表编辑器定位到HKEY_CURRENT_USER\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}。如果InprocServer32子键不存在就新建一个选中它右侧把默认值双击清空不要删除键确认后重启资源管理器。这样 Win11 的右键菜单就回到类似 Win10 的完整列表。想恢复默认 Win11 菜单删掉这个 CLSID 键即可。这个值对系统没有副作用我用到现在没遇到问题但如果你运行的是 24H2 之前的预览版建议先备份注册表再操作。注意别在HKEY_LOCAL_MACHINE下创建同路径的InprocServer32否则会影响所有用户而且一旦想还原会麻烦不少。这个操作目前只影响当前用户的资源管理器菜单样式没有涉及系统文件算是比较安全的体验优化。4.3 手动清理注册表的安全边界与备份清理右键菜单时最大的风险是删错键。我曾经遇到过一位用户他把*\shell\open这个系统默认的“打开”命令删掉了结果所有文件类型双击都无法正常打开。所以动手前务必先备份要删除的注册表分支。做法很简单在注册表编辑器中选中目标键右键“导出”保存为 .reg 文件万一出问题再双击导回。另外删除后不应该马上重启资源管理器而是先用任务管理器测试一下你想使用的功能确认没影响再重启。还有一点要注意shell分支下的子键不一定都是右键菜单项有些软件会把“打印”“桌面快捷方式”等行为也注册在这里。别看到陌生的键就一刀切尤其是带灰色图标的键很可能来自第三方软件但本身无害。更稳妥的做法是先导出整个HKEY_CLASSES_ROOT\*\shell键到备份文件再逐项排查。5. 常见问题与排查技巧实录5.1 VSCode 右键菜单没有“通过 Code 打开”的解决方案这种情况大多发生在 Win11 或者安装了非官方便携版的 VSCode 上。如果右键菜单里完全看不到“通过 Code 打开”先按我之前的方法确认code命令是否可用。在 PowerShell 里输入code --version能输出版本信息说明命令行工具正常问题就在右键注册表项没建立。这时把 2.3 节的脚本重新导入一次再重启资源管理器。如果依然无效检查注册表路径有没有被组策略禁用。有一些精简版或绿色版 VSCode安装时没有写注册表也不会自动注册右键菜单。针对这种便携版你需要手动改脚本中的路径指向便携包所在目录的bin\code.cmd并且还要确认它依赖的Code.exe和resources文件都在同一目录下否则 VSCode 能启动但会弹错误提示。5.2 右键菜单图标不显示或点击无反应菜单出现但图标空白通常是注册表里Icon键值指向的路径不对。注意Icon指向的是Code.exe而command指向的是code.cmd两者不要搞混。如果图标路径里有环境变量比如%LOCALAPPDATA%在注册表里很多时候会被解析但在资源管理器刷新时可能延迟所以用绝对路径最稳妥。点击菜单项没反应常见原因是command键里的命令路径没加引号。比如你写了C:\Program Files\Microsoft VS Code\bin\code.cmd %1但没给code.cmd加引号系统会因为空格把路径切碎。另一个原因是传参不对文件路径里本身带空格注册表会在执行前解析%1如果命令层没有用双引号包住%1就会导致参数被截断。其实问题多半出在引号嵌套把命令行改写成C:\...\code.cmd %1就能解决。5.3 多版本 VSCode 或便携版如何指定版本打开有些开发者电脑上装了稳定版和 Insiders 版或者公司给的是便携版右键菜单默认只能指向其中一个。处理办法也很简单你只需要在注册表里建两个不同的子键比如VSCode和VSCode Insiders菜单名称区分开各个command指向各自的命令。但注意两个子键的名称不能相同否则后面写入的会覆盖前面的。如果你想在不同的用户下配置不同版本可以用前面提到的HKEY_CURRENT_USER\Software\Classes实现每个用户各自的配置。便携版 VSCode 还需要注意一点code.cmd启动时会读取当前目录下的设置文件和插件目录如果你的便携包所在路径包含中文或空格务必在脚本里用引号包住完整路径否则运行时可能找不到已安装的插件。我建议把便携包放在纯英文且无空格的路径比如D:\Tools\VSCode省掉很多奇怪的麻烦。5.4 常见问题速查表问题现象原因解决方案右键菜单完全没有 VSCode 选项命令行工具未安装在 VSCode 内执行“在 PATH 中安装 code 命令”有菜单项但图标空白Icon 路径错误将 Icon 改为绝对路径确认 Code.exe 存在点菜单没反应command 路径未加引号将命令和%1分别用引号包裹右键菜单在 Win11 需要多一步Win11 新菜单折叠通过 CLSID 设置恢复经典右键菜单菜单突然消失软件升级或清理工具误删重新导入注册表脚本不想显示 AMD 右键菜单显卡驱动注册在 AMD Software 设置中关闭这张表基本覆盖了我在实践中遇到的 80% 问题。另外提醒一句如果你用了第三方“右键菜单管理工具”禁用某些项之后可能被工具本身的数据库搞乱建议禁用前先看它导出备份是否完整。在我自己的一台主力开发机上这个“通过 Code 打开”的右键菜单已经用了好几年平时切换项目基本不经过 VSCode 启动页直接右键文件夹进去就是干活状态。折腾完右键菜单之后另一个受益点是可以顺手把“在终端中打开”也加上这样不用切到资源管理器地址栏敲cmd效率翻倍。如果你用的是其他编辑器把脚本里的code命令换成对应的可执行文件整套思路完全通用。最后再分享一个小技巧注册表脚本导入前最好先单独在文本编辑器里打开看一眼路径因为 Windows 的记事本有时会对中文编码有细微影响把菜单显示名的中文改成乱码别问我怎么知道的。