vscode插件更新失败主因是杀软静默拦截,需向windows defender添加三个文件夹排除项(主程序、用户数据、临时缓存目录),并在火绒/360自定义防护中放行远程线程、本地端口监听及命名管道访问行为。

VSCode插件更新失败是杀软静默拦截,不是网络或权限问题
插件市场打不开、扩展安装卡在“正在下载…”、更新后不生效——这些现象大概率不是代理没配好,也不是你没点“允许”,而是 Windows Defender、火绒或 360 在后台直接丢弃了 extensionHostProcess.exe 的网络请求或临时文件写入。它不弹窗、不报错,只让进程无声退出。验证方式很简单:打开任务管理器,启动 VSCode 后盯紧 extensionHostProcess.exe,如果它刚出现就消失,再去看安全软件的“防护日志”或“阻止记录”,搜 extensionHostProcess.exe 或 vscode,基本一抓一个准。
必须加进排除列表的三个路径(Defender 专用)
只把 Code.exe 加进 Defender 排除项完全无效,因为插件更新真正干活的是子进程和临时目录。这三个路径缺一不可,且必须选「文件夹」类型:
-
%USERPROFILE%AppDataLocalProgramsMicrosoft VS Code—— 主程序和内置模块所在,extensionHostProcess.exe就从这儿拉起 -
%USERPROFILE%AppDataRoamingCode—— 所有插件 ZIP 包解压、激活、缓存都发生在这里 -
%TEMP%scode—— 插件安装时的临时提取目录,ESLint、Prettier 等依赖型插件高频读写此处
操作入口:设置 → 隐私和安全性 → Windows 安全中心 → 病毒和威胁防护 → 管理设置 → 添加或删除排除项 → 添加文件夹。粘贴路径后别点“确定”就走,确保状态栏显示“已添加”才生效。
火绒/360 用户要重点关掉“自定义防护”里的三类规则
这类软件的主界面可能放行了 Code.exe,但“自定义防护”模块仍会拦截插件更新的关键行为,且默认不提示:
- 创建远程线程 →
extensionHostProcess.exe加载原生模块(如 Node.js 的node-gyp编译产物)时触发,被标为“进程注入” - 监听本地回环端口 → 插件调试器(如 Debugger for Chrome)或 Live Share 启动时绑定
127.0.0.1:3000类端口,判为“可疑网络行为” - 访问命名管道 → 插件与主进程通信用
\.pipescode-ipc-xxx,勒索防护常将其锁死
解决方法:打开火绒 → 防护中心 → 自定义防护 → 高级防护 → 查最近拦截记录 → 对含 extensionHostProcess.exe 或 Code Helper 的条目点“添加信任”。若无自动记录,需手动新建规则,类型选“允许进程创建远程线程”“允许监听本地端口”“允许访问命名管道”。
插件更新卡住时别重装,先清空两个缓存目录
即使杀软已放行,旧缓存也可能导致更新逻辑错乱,尤其跨大版本(如 1.89 → 1.90)后:
- 删掉
%USERPROFILE%AppDataRoamingCodeCache—— 这是插件市场 UI 和元数据缓存,损坏会导致“找不到扩展” - 删掉
%USERPROFILE%AppDataRoamingCodeCachedData—— 存着插件激活后的预编译 JS 模块,残留旧版会引发ERR_CONNECTION_REFUSED类错误
注意:这两个目录删除后,首次打开插件市场会稍慢,但不会丢失已安装插件或设置。别碰 Extensions 目录——那是你的插件本体,删了就得重装。
最易被忽略的一点:%TEMP%scode 目录权限可能被勒索防护锁定,即使加了 Defender 排除,火绒仍会拒绝写入。得进它的“勒索防护”页单独放行该路径,否则插件 ZIP 解压失败,表现就是“安装完成”但图标灰掉、点不开。











