绝大多数个人开发者应选User Installer;它无需管理员权限、配置隔离、卸载干净、更新稳定,而System Installer仅适用于多用户共用或统一部署场景。

VSCode 命令行安装本身不提供“用户模式”或“系统模式”的选择开关——它取决于你用哪个安装包、以什么权限运行,而不是安装命令里的参数。
区分 user-setup.exe 和 system-setup.exe
Windows 上 VSCode 官网提供的两个主要 .exe 安装包,行为差异根本不在命令行参数,而在文件名和签名逻辑:
-
VSCodeUserSetup-x64-*.exe:默认安装到C:\Users\{username}\AppData\Local\Programs\Microsoft VS Code,无需管理员权限,只对当前用户生效 -
VSCodeSystemSetup-x64-*.exe(或带system字样的版本):必须右键 → “以管理员身份运行”,安装到C:\Program Files\Microsoft VS Code,所有本地用户可见
你用 start /wait 或 msiexec 静默执行时,决定模式的仍是安装包本身,不是命令。比如:
start /wait VSCodeUserSetup-x64-1.94.2.exe /VERYSILENT /MERGETASKS=!runcode
这仍是用户模式安装,哪怕你在管理员 CMD 里运行它。
winget install 默认走用户模式
Windows 11 自带的 winget 在非管理员终端中执行 winget install Microsoft.VisualStudioCode,实际下载并静默调用的是 user-setup.exe,结果等同于双击用户安装包。
- 验证方式:安装后检查
Get-AppxPackage -Name "Microsoft.VisualStudioCode"不会返回结果(它不是 AppX),而Get-ChildItem "$env:LOCALAPPDATA\Programs\Microsoft VS Code"通常有内容 - 想强制系统模式?
winget目前不支持指定安装类型,只能手动下载system-setup.exe并用Start-Process+-Verb RunAs提权运行
静默安装时 PATH 和上下文菜单的坑
用户模式安装虽免权限,但静默参数若漏掉关键任务,会导致后续体验断裂:
-
/MERGETASKS=desktopicon,quicklaunchicon:只加桌面/快速启动图标,不等于加资源管理器右键菜单 - 真正控制右键菜单和 PATH 的是:
/MERGETASKS="addcontextmenufiles,addcontextmenudirs,addtopath" - 漏掉
addtopath→code命令在新打开的 CMD/PowerShell 中不可用(需重启终端或手动改 PATH) - 漏掉上下文菜单任务 → 右键“通过 Code 打开”不会出现,且无法通过设置回补(必须重装或手动注册表)
多用户环境下的真实约束
即使你用管理员权限运行了 user-setup.exe,它仍写入当前用户的 AppData,其他用户登录后看不到这个 VSCode 实例——这是设计使然,不是 bug。
- 系统模式安装才可能被所有用户调用,但插件、设置、缓存仍按用户隔离(
VSCODE_USER_DATA_DIR仍起作用) - 没有“一次安装、全用户共享配置”的安全路径;想统一配置,得靠策略部署 + 同步
settings.json,而非依赖安装模式 - 企业批量部署常见做法:用 Intune 或 SCCM 分发
system-setup.exe+ 注册表策略锁定部分设置,再配合登录脚本注入VSCODE_USER_DATA_DIR
用户模式不是“功能阉割版”,而是明确划分所有权边界的机制。混淆它和系统模式,往往是因为没意识到 VSCode 的配置生命周期完全独立于安装路径——settings.json 存哪儿,比 Code.exe 装哪儿重要得多。


















