症状表现
昨天还好好的,今天就打不开
开机后 Claude 已经自己退出;再打开报错,或者窗口根本不出现。
PowerShell 能确认
运行 Get-AppxPackage *claude* 会显示 Status : Modified, NeedsRemediation。
Repair 只能顶一会
用 Windows 修复/重装后恢复 Status : Ok,但用几分钟又变回崩溃状态。
弹了个应用内验证码后就崩了
有人反馈是在应用里弹出 Cloudflare 验证码(captcha)时崩的——那是表象不是病根(下面细说)。
到底发生了什么
新版 Claude Desktop 的 MSIX 版(1.24012+)打包了 vk_swiftshader.dll——这是 Chromium 在 GPU 挂掉时用的软件渲染兜底。在开启了 Code Integrity 的机器上,从 MSIX 容器里加载这个 DLL 会被拦:
Code Integrity 事件 3033:...\app\vk_swiftshader.dll "did not meet the Microsoft signing level requirements."连锁反应
- 1. GPU 进程回退到 swiftshader这个 DLL 被拦,GPU 进程崩溃(退出码 0x060C201E)。
- 2. Windows 标记整个包整个签名包被标记为 Modified、NeedsRemediation。
- 3. 下次启动失败启动报 0x3CFC("Cannot create the process… try reinstalling")。
「弹验证码 / 在应用里点开链接那一下就崩了」
有些人注意到崩溃总对上某个特定时刻:应用内弹出 Cloudflare 验证码,或者点了个在内置浏览器(Browser 窗格 / 预览)里打开的链接。它们其实都不是真正的元凶,值得把话说准一点。整个应用本来就是个一直在持续绘制的 Electron 窗口,普通渲染并不是压垮它的原因。真正压垮它的是 GPU 子进程被要求去做一件会触到「软件 Vulkan 兜底」的活儿——而这个触发条件比「一个用 WebGPU 的页面」要更宽。只要在 Browser 窗格里打开任何页面,窗格就会对它截一张图(Chromium 的 capturePage),而截图需要 GPU 上下文。所以一个完全不用 WebGL/WebGPU 的纯静态页面,照样能把它搞崩;Cloudflare 挑战页(或任何用到 WebGPU 的页面)只是让它崩得更快、更稳而已。
一旦 GPU 子进程需要走这条路,它就会去加载程序包自带的 app\vk_swiftshader.dll——也就是软件版 Vulkan ICD。这个子进程跑在 Code Integrity Guard(只允许微软签名)之下,而这个 DLL 是 Anthropic 签的,过不了校验(事件 3033,STATUS_INVALID_IMAGE_HASH),GPU 进程随之崩溃。Chromium 会重试 5 次拉起 GPU 进程,全部失败,然后干脆把整个应用一起带走(「GPU process isn't usable. Goodbye.」)。又因为被拦的 DLL 位于一个 WindowsApps 程序包内、而它的完整性目录加载不了(事件 3010——发布出来的 MSIX 里其实缺了 AppxMetadata\CodeIntegrity.cat 这个文件),Windows 就把整个包标记为 Modified、NeedsRemediation。
这正是 Anthropic 官方 bug 报告(anthropics/claude-code#88323)里带完整日志记录的机制,而且在那个帖子里被多人独立复现——覆盖 NVIDIA、AMD、Intel 集显、甚至 Windows ARM64,侧载版和官方下载版都中招。有两个细节特别值得一提:同一台机器上的真 Google Chrome 也会撞上一模一样的 3033 拦截(拦它自己的 vk_swiftshader.dll),但 Chrome 若无其事——因为 Chrome 不是打包应用,没有「程序包状态」可被污染,这证明这个拦截只在 MSIX/CIG 语境下才致命。另外,关掉硬件加速根本没用:vk_swiftshader 本身就是软件渲染器,关掉 GPU 只会把 Chromium 往那个被拦的 DLL 上赶,而不是避开它。表面上触发路径各不相同,病根都是同一个——下面那个修复办法照样管用。
谁会中招
不是所有人,但只要你的 Windows 强制开启了 Code Integrity 就基本必中(安全加固 / 打开了「内存完整性 HVCI」、某些企业策略或虚拟显示环境)。它跟具体的 GPU 或驱动无关:出问题的那条路径根本走不到厂商驱动,全新驱动和好几年前的老驱动都复现过,独显、集显、乃至 ARM64 一样中招。看上去更像是 Electron 版本回归(大约在 1.28929 → 1.30096 那几个版本冒出来的),而不是硬件的锅。(OpenAI 的 Codex 桌面版也是完全同类的 bug。)
真正能根治的办法
别再用 MSIX(商店)版了。改用 Squirrel 版——它装到 %LOCALAPPDATA%\AnthropicClaude,在 MSIX 容器之外,所以「Microsoft 签名级别」的强制校验管不到它的 DLL。同一个 Claude、同一版本家族,从此不再自损坏。
操作步骤(Windows)
- 1. 拿一个 Squirrel 包(.nupkg)https://downloads.claude.ai/releases/win32/x64/AnthropicClaude-<版本>-full.nupkg —— 该目录下的 RELEASES 文件列出了当前版本号。
- 2. 解压 lib/net45/把里面内容解压到 %LOCALAPPDATA%\AnthropicClaude\app-<版本>\
- 3. 运行 claude.exe从这里运行,并创建桌面 / 开始菜单快捷方式。
- 4. 锁定版本为了防止它自动更新回坏掉的 MSIX 版,往 hosts 文件加一行:0.0.0.0 downloads.claude.ai(以后想更新再删掉这行)。
不想手动弄?
有一个 PowerShell 脚本把整套流程都封装好了(下载正确的 Squirrel 版、解压、建快捷方式,可选地卸掉坏 MSIX 并锁版本):https://gist.github.com/KehuiPang/0a678ac866ed4b9b883e9a30f4b63372 —— MIT 协议、无担保,不会碰你的 Claude 数据和登录。
常见问题
为什么 Claude Desktop 只是有时候打不开?
这跟 Code Integrity 有关。在强制开启它的机器上(安全加固、打开了 HVCI / 内存完整性、某些企业策略或虚拟显示环境),自带的 vk_swiftshader.dll 会被拦,从而损坏程序包。这跟你的 GPU 或驱动无关——出问题的那条路径根本走不到厂商驱动,新旧驱动、集显独显、乃至 ARM64 都复现过。没强制开启 Code Integrity 的机器上,Claude 就正常。
重装 Claude 桌面版能永久修好吗?
不能。修复或重装只能顶几分钟,然后又会自损坏,因为触发原因(被拦的 DLL)还在。必须从 MSIX 版迁走才行。
换成 Squirrel 版安全吗?
安全——就是同一个 Claude,只是装在 MSIX 沙箱之外,不会碰你的数据和登录。随时可以重装商店版还原回去。
别的 AI 桌面应用也有这个 bug 吗?
有。OpenAI 的 Codex 桌面版用的是同样的 Electron + MSIX + 内置 swiftshader 组合,撞的是同一类 bug。
换完之后用 Google 登录,Claude 一直卡在登录页,怎么办?
这是因为 claude:// 协议没有被注册。用 Google 登录时,浏览器会通过 claude://... 回调把结果交回给 Claude;如果没有程序接管这个协议,回调就无处可去,应用便一直停在登录页。改用「邮箱 + 验证码」登录能成,是因为那条路不走这个深链接。彻底解决办法是把 claude:// 协议注册到你解压出来的 Claude.exe(本文的 PowerShell 脚本会自动做这一步),之后 Google 登录就能正常跳回应用。
换成 Squirrel 版后聊天记录像被清空了,是丢了吗?
没丢,什么都没被删。MSIX 版把数据存在它自己的沙箱包目录里,而 Squirrel 版读的是 %APPDATA%\Claude,所以新版暂时看不到旧数据而已。把旧的聊天/会话数据复制过去,记录就会回来(脚本的 -MigrateData 选项会帮你自动迁移)。