根源在于VSCode Stable与Insiders安装时共用同一AppUserModelID(如Microsoft.VisualStudioCode_8wekyb3d8bbwe),导致Windows任务栏将其识别为同一应用而强制合并图标;需通过修改注册表、替换EXE内嵌图标或使用带自定义图标的独立快捷方式三者之一实现分离,且必须彻底退出所有相关进程并确保SystemComponent=0。

Windows上任务栏图标不区分Stable和Insiders的根源
VSCode默认安装时,Stable和Insiders都注册为同一组AppUserModelID(Azure.azure-data-studio 类似逻辑),导致Windows将它们视为“同一个应用”,强制复用首个启动实例的图标。这不是VSCode bug,而是Windows Shell对UWP/Modern应用模型的分组策略——只要AppUserModelID相同,任务栏就合并。
关键点在于:VSCode本身不控制这个ID,它由安装器(vscode-win32-x64-*.exe 或 VSCodeSetup-x64-*.exe)在注册表写入时决定。Insiders安装包默认复用Stable的ID,而非生成独立值。
手动修改注册表强制分离AppUserModelID
必须同时修改两处注册表项,缺一不可:
- 打开注册表编辑器,定位到:
HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppModel\SystemAppData\Microsoft.VisualStudioCode_8wekyb3d8bbwe(Stable路径) - 复制该键名,把末尾
Microsoft.VisualStudioCode_8wekyb3d8bbwe改成Microsoft.VisualStudioCodeInsiders_8wekyb3d8bbwe(Insiders专用) - 在新键下新建字符串值:
AppUserModelId,值设为Microsoft.VisualStudioCodeInsiders - 再检查
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall下两个VSCode条目,确保SystemComponent值均为0(否则Windows可能忽略自定义ID)
改完后需彻底退出所有VSCode进程(包括后台Code.exe和Code - Insiders.exe),再分别启动——此时任务栏会显示两个独立图标,右键菜单也互不干扰。
图标文件替换要匹配exe签名与资源索引
直接替换resources\app\resources\win32\code.ico无效,因为Windows从EXE资源节读取图标,且Stable/Insiders的code.exe和Code - Insiders.exe是不同二进制文件。
正确做法:
- 用
Resource Hacker(免费工具)打开Code.exe(Stable)或Code - Insiders.exe(Insiders) - 展开
ICON GROUP→ 找到ID为101的图标组(主窗口图标) - 右键替换为自定义ICO(必须含16×16、32×32、48×48、256×256多尺寸)
- 保存后,右键该EXE → “属性” → “兼容性” → 勾选“以管理员身份运行此程序”(避免资源写入被拦截)
注意:每次VSCode自动更新都会覆盖EXE,图标会被重置。建议把修改后的EXE备份,并在更新后重新注入图标。
更稳妥的方案:用第三方启动器隔离进程
如果注册表或资源修改后仍合并,本质是Windows检测到两个进程共享同一“应用家族”。可绕过系统识别:
- 为Insiders创建单独快捷方式,目标设为:
"C:\path\to\Code - Insiders.exe" --unity-launch "insiders" - 右键该快捷方式 → “属性” → “快捷方式”选项卡 → 点击“更改图标” → 选一个明显不同的ICO(如蓝色火焰图标)
- 关键一步:在“快捷方式”选项卡中,把“运行方式”改为“最小化”,再点击“高级” → 勾选“用管理员身份运行”
- 启动时务必双击此快捷方式,而非直接运行EXE;Windows会将其视为独立“启动入口”,任务栏图标即按快捷方式图标显示
这个方法不碰注册表和EXE资源,更新安全,但要求用户养成固定启动习惯——一旦误点原EXE,图标又会混回Stable样式。
实际生效的关键,是让Windows认为两个实例属于不同应用实体。注册表ID、EXE资源、快捷方式三者任选其一即可,但必须确保没有残留进程干扰识别。最常被忽略的是更新后忘记重注图标,或者没杀干净后台Code.exe导致新旧ID并存。











