必须手动清理HKEY_CURRENT_USER\Software\Microsoft\VS Code和HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VS Code两处注册表项,同时同步删除%APPDATA%\Code、%USERPROFILE%.vscode\extensions及%LOCALAPPDATA%\Code,否则重装仍恢复旧设置、右键重复或失效。

VSCode 卸载后注册表残留不清理,重装就会自动恢复旧设置、右键菜单重复、“Open with Code”点不动、甚至登录状态直接“复活”——这不是 bug,是设计如此,必须手动清。
只删这两个注册表路径,其他地方别碰
VSCode 的注册表项只写在这两处,卸载程序完全不管,99% 的残留问题都源于它们:
-
HKEY_CURRENT_USER\Software\Microsoft\VS Code:用户级全部配置来源,包括窗口布局、最近打开文件夹、扩展启用状态、UI 主题。删了它,重装才是真干净 -
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VS Code:仅 System Installer 安装时存在(管理员权限安装),普通用户几乎见不到;若存在,一并删掉
⚠️ 别搜 VisualStudioCode 或 VSCode(带空格或大小写混搭),也别进 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall 乱删 GUID 项——那是 MSI 元数据,删了会影响系统“已安装应用”列表显示,和 VSCode 运行无关。
删之前必须确认三件事
注册表操作不可逆,删错可能影响右键菜单或系统稳定性:
- 任务管理器里彻底结束所有
Code.exe、Code Helper.exe(含 GPU/Renderer 后缀)、Code - Insiders.exe进程,否则注册表项可能被锁住,删不掉或删不全 - 打开
regedit后,先选中要删的整项(比如VS Code),点「文件 → 导出」保存为vscode-reg-backup.reg,留作回滚依据 - 确认你删的是
VS Code(中间有空格),不是VisualStudio、VSCode(无空格)或VisualStudioCode(连写)——后三者极可能是旧版、OSS 分支或第三方误写,删错会波及其他工具
右键菜单出现两个“Open with Code”?定位并删冗余项
这不是 VSCode 自己加的,而是多次安装/卸载后,注册表里堆了多个同名但路径失效的 shell 注册项。Windows 资源管理器不判重,全渲染出来:
- 用
regedit按Ctrl+F搜索OpenWithCode,重点检查三处:HKEY_CLASSES_ROOT\Directory\Background\shell\OpenWithCode、HKEY_CLASSES_ROOT\Directory\shell\OpenWithCode、HKEY_CLASSES_ROOT\*\shell\OpenWithCode - 逐个展开,看子项
command下的默认值是否指向已删除的旧安装路径(比如C:\Users\XXX\AppData\Local\Programs\Microsoft VS Code\Code.exe) - 确认某一项已失效,右键该父项 → “删除”。每次只删一个,删完在任务管理器重启
explorer.exe验证效果 - 注意:
command值里必须写code.cmd(位于bin\code.cmd),不是Code.exe——后者缺少 shell 初始化逻辑,点右键常静默失败
删注册表 ≠ 彻底干净,%APPDATA%\Code 必须同步清
注册表和用户数据目录是强绑定的:如果只删 HKEY_CURRENT_USER\Software\Microsoft\VS Code,但留着 %APPDATA%\Code,下次启动 VSCode 会立刻从这个目录读取 settings.json、扩展清单、缓存,再原样写回注册表——等于白删。
- 必须同步删除:
%APPDATA%\Code(含全局设置、扩展启用状态)、%USERPROFILE%\.vscode\extensions(插件本体文件夹)、%LOCALAPPDATA%\Code(GPU 缓存、CachedData,不清它新装常卡在“正在激活扩展”) - 别混淆
%USERPROFILE%\.vscode和%APPDATA%\Code:前者是扩展默认安装位置,后者是用户配置主目录,两者职责不同,漏一个都会导致残留 - 删完记得检查 PATH 环境变量里是否还有
Code或VS Code路径,否则终端敲code仍会调起旧实例
真正麻烦的从来不是注册表本身,而是它和 %APPDATA%\Code 的联动关系——删一半,等于没删。











