适用情况:点「启动」仍去打开旧的商店包,报文件系统错误;或卸掉后用微软商店 / winget 重装,报 0x803fb017。
ChatGPT Windows 桌面版是微软商店应用,包名是 OpenAI.Codex,产品编号是 9PLM9XGG6VKS。不要到 C:\Program Files\WindowsApps 里手动删目录。
以下命令都在当前用户的管理员 PowerShell 里执行。
现象
旧包路径:
C:\Program Files\WindowsApps\OpenAI.Codex_26.917.6896.0_x64__2p2nqsd0c76g0\app\ChatGPT.exe
点「启动」时报:
文件系统错误 (-2143309801)
-2143309801 就是 0x803fb017。卸掉旧包后直接重装,winget 也会停在同一个错误码。
点「启动」时,窗口仍去打开旧包里的 ChatGPT.exe:

「已准备就绪」页面上的版本仍是 26.917,再点「启动」会弹出同一个错误:

原因
有两层,要按顺序处理。
- 本机还登记着损坏的商店包
OpenAI.Codex_26.917.6896.0_x64__2p2nqsd0c76g0。开始菜单或旧窗口里的「启动」会继续调用这个包里的ChatGPT.exe。 - 旧包卸掉之后,系统 WinHTTP 代理仍指向
127.0.0.1:9203,但这个端口没有程序在监听。微软商店的下载走 WinHTTP,所以winget install拿到0x803fb017。
浏览器里的代理是另一套设置。这次用户代理是关闭的(ProxyEnable = 0,地址 127.0.0.1:6789),拦下载的是 WinHTTP 的 127.0.0.1:9203。
winget 显示 版本: Unknown 是商店应用的正常结果,不代表安装失败。
完整步骤
1. 确认残留
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*, HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*, HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* -ErrorAction SilentlyContinue | Where-Object { $_.DisplayName -match 'ChatGPT|OpenAI' } | Select-Object DisplayName, DisplayVersion, Publisher, InstallLocation, UninstallString | Format-List
Get-AppxPackage -AllUsers | Where-Object { $_.PackageFullName -like 'OpenAI.Codex_*' } | Select-Object Name, PackageFullName, InstallLocation | Format-List
Test-Path "$env:LOCALAPPDATA\OpenAI"
商店包不会出现在普通「卸载」注册表里。以 Get-AppxPackage 的结果为准。
2. 卸掉旧包并清用户数据
Get-Process | Where-Object { $_.ProcessName -match 'ChatGPT|OpenAI' } | Stop-Process -Force -ErrorAction SilentlyContinue
Get-AppxPackage -AllUsers | Where-Object { $_.PackageFullName -like 'OpenAI.Codex_*' } | ForEach-Object {
Remove-AppxPackage -Package $_.PackageFullName -AllUsers -ErrorAction Stop
"REMOVED $($_.PackageFullName)"
}
Remove-Item -LiteralPath "$env:LOCALAPPDATA\OpenAI","$env:APPDATA\OpenAI" -Recurse -Force -ErrorAction SilentlyContinue
卸载成功时,事件日志里会出现类似记录(结果 0x0):
正在将程序包文件夹 C:\Program Files\WindowsApps\OpenAI.Codex_... 移动到
C:\Program Files\WindowsApps\Deleted\OpenAI.Codex_...
部署 Remove 操作已成功完成。
查看命令:
Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-AppXDeploymentServer/Operational'; StartTime=(Get-Date).AddHours(-3)} -ErrorAction SilentlyContinue |
Where-Object { $_.Message -match 'OpenAI.Codex' } |
Select-Object -First 4 TimeCreated, Id, Message |
Format-List
3. 重装前检查 WinHTTP 代理
netsh winhttp show proxy
$c = Get-NetTCPConnection -LocalPort 9203 -State Listen -ErrorAction SilentlyContinue | Select-Object -First 1
if ($c) { "LISTENING pid=$($c.OwningProcess) $((Get-Process -Id $c.OwningProcess -ErrorAction SilentlyContinue).ProcessName)" } else { 'NOT LISTENING' }
输出是 NOT LISTENING,且 netsh 仍显示 127.0.0.1:9203 时,这就是 0x803fb017 的原因。清掉失效代理:
netsh winhttp reset proxy
清完后应显示「直接访问(没有代理服务器)」。
如果 9203 显示 LISTENING,说明代理软件正在运行。先让它放行 *.mp.microsoft.com,安装过程中不要关闭它,不要执行 netsh winhttp reset proxy。
4. 安装
Get-Service InstallService -ErrorAction SilentlyContinue | ForEach-Object { Set-Service $_.Name -StartupType Manual; Start-Service $_.Name }
winget install --id 9PLM9XGG6VKS -s msstore --accept-package-agreements --accept-source-agreements
成功时最后几行是:
验证/请求程序包获取成功
正在启动程序包安装...
已成功安装
装完后从开始菜单打开 ChatGPT。不要再点卸掉之前那个窗口里的「启动」。
商店页面若先弹出「请稍后重试 / 我们这边出现了问题」,先关掉,改走上面的 winget。这个弹窗同样是商店下载失败,和旧包里的 ChatGPT.exe 不是同一步。需要刷新商店缓存时再执行 wsreset.exe。

这次机器上的结论
| 检查项 | 结果 | 是否导致装不上 |
|---|---|---|
旧包 OpenAI.Codex_26.917.6896.0_x64__2p2nqsd0c76g0 |
11:50:53 已成功移除 | 会让旧的「启动」继续报错,移除后不再影响安装 |
| WinHTTP 代理 | 127.0.0.1:9203,端口 NOT LISTENING |
是。netsh winhttp reset proxy 后安装成功 |
| 用户代理 | 已关闭,地址 127.0.0.1:6789 |
否 |
| 系统时间 | 已与 time.windows.com 同步 |
否 |
InstallService |
正在运行 | 否 |
winget 版本显示 Unknown |
商店源的正常显示 | 否 |
日志里的 LittleBit_is1、winToolBox |
读取卸载注册表失败,已被忽略 | 否 |
失败时再看日志
安装再次报错时执行:
$log = Get-ChildItem "$env:LOCALAPPDATA\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\DiagOutputDir\*.log" -ErrorAction SilentlyContinue | Sort-Object LastWriteTime -Descending | Select-Object -First 1
Select-String -Path $log.FullName -Pattern '803fb017|FAIL' | Select-Object -Last 12 | ForEach-Object Line
真正对应这次失败的一行是:
Caught winrt::hresult_error: 0x803fb017 : unknown error