vscode冷启动自动打开上次项目需同时禁用windows启动项和设window.restorewindows为none:在任务管理器“启动”选项卡或系统设置中禁用vscode,再于vscode设置中将window.restorewindows设为none,并确保macos彻底退出进程(cmd+q)及排除命令行干扰参数。

VSCode冷启动时自动打开上次项目,本质是两个独立开关共同作用的结果:系统级自启 + 编辑器会话恢复。只关一边,问题必然复现。
禁用 Windows 启动项里的 VSCode
这是最常被忽略的第一环。VSCode 本身不注册开机自启,但 Windows 会把它加进「登录时自动运行」列表——哪怕你从没手动设置过。
- 按
Ctrl + Shift + Esc打开任务管理器 → 切到「启动」选项卡 - 找到名称为
Visual Studio Code或发布者为Microsoft Corporation的条目 - 右键 → 「禁用」
- 某些新版 Windows(如 22H2+)可能不显示在任务管理器里,需额外去「设置 → 应用 → 启动」中确认
VisualStudioCode或Code开关为关闭状态
关闭 VSCode 自身的窗口恢复逻辑
window.restoreWindows 控制编辑器“启动后干啥”,设成 none 才真正切断恢复行为。设成 folders 或 all 都会触发上次项目加载,哪怕系统启动项已关。
- 打开设置:
Ctrl + ,(Windows/Linux)或Cmd + ,(macOS) - 搜索
window.restoreWindows - 下拉选择
none(不是prompt,那个仍会弹窗询问) - 顺手检查
workbench.startupEditor是否为welcomePage,避免它被其他设置覆盖
macOS 用户必须彻底退出进程
macOS 下点红叉 ≠ 退出 VSCode。只要 Code 进程还在后台跑,下次点击 Dock 图标只是唤起已有窗口,window.restoreWindows 根本不生效——它只在冷启动(进程完全退出后重新拉起)时起作用。
- 真正退出请用
Cmd + Q,或右键 Dock 图标选「退出」 - 验证是否退出:打开「活动监视器」,搜索
Code,进程列表里应无任何匹配项 - 可启用
window.closeWhenEmpty(设为true),让空窗口自动退出进程,减少误操作
避免命令行参数干扰恢复判断
快捷方式、终端别名或脚本里若带了 --welcome、--new-window、--disable-workspace-trust 等参数,会强制覆盖用户设置,导致欢迎页反复出现或恢复失效。
- 检查快捷方式属性里的「目标」字段,末尾是否多出了
--welcome - 终端中直接运行
code(不带任何参数)测试是否恢复正常行为 - 若需临时新开窗口,用
code -n;想复用当前窗口,用code -r,而非--new-window
真正麻烦的是:系统启动项控制“要不要跑”,VSCode 设置控制“跑起来后干啥”。两者解耦,也意味着排查时必须分开验证——比如禁用启动项后仍弹项目,问题一定出在 window.restoreWindows 或 macOS 进程残留上。











