Visual Studio 2022 + Windows SDK 22621 安装血泪史

发布时间:2026/9/3 5:38:17

Visual Studio 2022 + Windows SDK 22621 安装血泪史
记录一次非标准路径安装 VS2022 和 Windows SDK 的踩坑全过程以及 WPT Ghost 残留问题的终极解决方案。背景目标很简单安装Visual Studio 2022 Community到E:\TOOLS\vs2022Comunity安装Windows SDK 10.0.22621排除不需要的 SDK 版本26100和 Windows Performance ToolkitWPT看起来是标准操作但实际过程充满了各种诡异的错误。第一关WPT Ghost 弹窗地狱现象在安装过程中每次涉及 WPTWindows Performance Toolkit的操作都会弹出一个 Windows Installer 错误框The path C:\ProgramData\Package Cache\{EC12C121-3208-5E92-FCB0-0591769632F9}\ v10.1.18362.1\Installers\WPTx64-x86_en-us.msi cannot be found.点了无数次取消按钮弹窗又冒出来简直是无限弹窗地狱。原因分析系统之前安装过旧版 WPTv10.1.18362.1但 MSI 安装源文件被清理了C:\ProgramData\Package Cache中的文件已被删除。Windows 留下了两个ghost 产品残留在 MSI 数据库中Ghost ID产品{EC12C121-3208-5E92-FCB0-0591769632F9}WPTx64{A8E21603-6CBA-D168-ADF7-108A1DA16DB5}WPT Redistributables每当安装程序试图修复、升级或卸载这些产品时MSI 就会尝试查找安装源文件找不到就弹窗。尝试过的方案均失败1. 清理注册表 Uninstall 项删除了HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall中对应的条目。结果无效。这些只是显示层面的清理MSI 内部数据库仍然记录着这些产品。2. 在 VS Installer 中排除 WPT 组件setup.exe modify --installPath E:\TOOLS\vs2022Comunity --remove Microsoft.VisualStudio.Component.Windows11Sdk.WindowsPerformanceToolkit结果WPT 标记为 NotSelected但其他操作仍然会触发 ghost 的修复尝试。3. 创建假 MSI 文件在C:\ProgramData\Package Cache\{EC12C121-...}\下放置了一个占位 MSI 文件试图骗过 MSI。结果MSI 验证文件签名/哈希失败弹窗继续。4. winget 安装 SDKwinget install Microsoft.WindowsSDK.10.0.22621结果错误 1618 — 另一个 MSI 安装正在进行中WPT ghost 的残留进程占用了 MSI 互斥锁。5. 独立 SDK 安装器下载并运行winsdksetup.exe /quiet。结果静默安装后无报错但 SDK 并未实际安装同样被 WPT ghost 阻塞。终极方案深度清理 MSI 数据库经过研究WPT ghost 的根源不在注册表 Uninstall 项而在MSI 内部数据库的三个位置HKLM\SOFTWARE\Classes\Installer\Products\ProductCodeHKLM\SOFTWARE\Classes\Installer\Features\ProductCodeHKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\ComponentGUIDProductCode 计算规则MSI 注册表中的 ProductCode 是原始 GUID 的反转字节序形式。原始: {EC12C121-3208-5E92-FCB0-0591769632F9} 反转: 121C21CE 8023 29E5 CF0B 50196769239F即将前 3 部分的每个 4 位十六进制字节序反转后 2 部分保持原样。深度清理脚本# deep_clean_wpt.ps1 ​ $wptGuid {EC12C121-3208-5E92-FCB0-0591769632F9} ​ # 计算反转的 ProductCode function Reverse-GuidBytes { param([string]$guid) $clean $guid -replace [{}], $parts $clean -split - $p1 -join ($parts[0][6],$parts[0][7],$parts[0][4],$parts[0][5], $parts[0][2],$parts[0][3],$parts[0][0],$parts[0][1]) $p2 -join ($parts[1][2],$parts[1][3],$parts[1][0],$parts[1][1]) $p3 -join ($parts[2][2],$parts[2][3],$parts[2][0],$parts[2][1]) return $p1$p2$p3$($parts[3])$($parts[4]) } ​ $reversedCode Reverse-GuidBytes -guid $wptGuid ​ # 1. 删除 Products 键 $productPath HKLM:\SOFTWARE\Classes\Installer\Products\$reversedCode if (Test-Path $productPath) { Remove-Item -Path $productPath -Recurse -Force Write-Host [OK] Removed Products key } ​ # 2. 删除 Features 键 $featurePath HKLM:\SOFTWARE\Classes\Installer\Features\$reversedCode if (Test-Path $featurePath) { Remove-Item -Path $featurePath -Recurse -Force Write-Host [OK] Removed Features key } ​ # 3. 删除 Components 关联 $componentsPath HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components Get-ChildItem $componentsPath | ForEach-Object { $value (Get-ItemProperty -Path $_.PSPath -Name $reversedCode -ErrorAction SilentlyContinue).$reversedCode if ($value) { Remove-ItemProperty -Path $_.PSPath -Name $reversedCode -Force Write-Host [OK] Removed Component: $($_.PSChildName) } }执行结果[OK] Removed Products key [OK] Removed Features key [OK] Removed Component: B79AA12C5E96CCC4D9B263E0B3BED119 ​ SUCCESS: WPTx64 completely removed3 个残留注册表项全部清除。另一个 ghost{A8E21603-...}在之前的操作中已被清除。第二关SDK 终于安装WPT ghost 清除后通过 VS Installer 的 modify 命令安装 SDK 22621 C:\Program Files (x86)\Microsoft Visual Studio\Installer\setup.exe modify --installPath E:\TOOLS\vs2022Comunity --quiet --norestart --add Microsoft.VisualStudio.Component.Windows11SDK.22621这一次安装成功完成没有弹窗安装位置说明SDK 被安装到了D:\Windows Kits\10\而非默认的C:\Program Files (x86)\Windows Kits\10\因为注册表中KitsRoot10已经指向 D 盘。目录结构D:\Windows Kits\10\ ├── Include\10.0.22621.0\ │ ├── shared\ (共享头文件) │ ├── um\ (User Mode) │ ├── winrt\ (WinRT) │ └── cppwinrt\ (C/WinRT) └── Lib\10.0.22621.0\ └── um\x64\ (64位库文件)第三关VS 无法自动找到 SDK现象使用vcvars64.bat激活 MSVC 环境后cl.exe编译时找不到windows.hmain.cpp(1): fatal error C1083: 无法打开包括文件: windows.h: No such file or directory原因vcvars64.bat默认在$(VC_VC_ProgramFilesx86)\Windows Kits\10\Include下查找 SDK但实际 SDK 在D:\Windows Kits\10\。解决方案方案一手动指定路径cl /EHsc /std:c17 ^ /ID:\Windows Kits\10\Include\10.0.22621.0\um ^ /ID:\Windows Kits\10\Include\10.0.22621.0\shared ^ /ID:\Windows Kits\10\Include\10.0.22621.0\winrt ^ /ID:\Windows Kits\10\Include\10.0.22621.0\cppwinrt ^ main.cpp ^ /link /LIBPATH:D:\Windows Kits\10\Lib\10.0.22621.0\um\x64方案二CMake 配置cmake_minimum_required(VERSION 3.20) project(HelloWorld) # 手动指定 SDK 版本和路径 set(CMAKE_SYSTEM_VERSION 10.0.22621.0) add_executable(helloworld main.cpp)方案三修改 Windows SDK 注册表如果希望vcvars自动识别可以在HKLM\SOFTWARE\Microsoft\Windows Kits\Installed Roots中确认KitsRoot10指向正确路径并确保版本子键10.0.22621.0存在。验证结果编译并运行 Hello World 程序Hello World from Visual Studio 2022! Windows SDK Version: 167772172 Build timestamp: Jul 10 2026 15:02:48组件版本状态MSVC 编译器19.44.35228✅Windows SDK10.0.22621.0✅头文件shared/um/winrt/cppwinrt✅库文件um/x64✅总结关键经验1. MSI Ghost 问题本质MSI 产品残留存储在多个注册表位置仅删除 Uninstall 项是不够的。必须清理HKLM\SOFTWARE\Classes\Installer\Products\ReversedGUIDHKLM\SOFTWARE\Classes\Installer\Features\ReversedGUIDHKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\GUID⚠️注意MSI 注册表中的 ProductCode 使用字节反转格式不是原始 GUID 格式2. 排查思路弹窗错误 → 确定 MSI 产品 GUID → 计算反转 ProductCode → 搜索 Products/Features/Components 三个位置 → 逐个删除 → 重启 → 重新安装3. 工具链建议MSI 清理使用msiexec /x {GUID}正常卸载不要手动删文件SDK 安装优先通过 VS Installer 安装而非独立安装器非标准路径注意注册表KitsRoot10指向的位置编译验证先写一个简单程序验证工具链完整性4. 时间线阶段耗时状态初始安装 VS2022正常✅WPT ghost 弹窗~2h 各种尝试❌深度清理 MSI 数据库5min✅SDK 22621 安装正常✅编译验证2min✅总计折腾时间约 2-3 小时其中 90% 的时间花在 WPT ghost 问题的排查和无效尝试上。参考MSI ProductCode 格式说明Windows SDK 安装器命令行选项VS Installer 命令行参数写于 2026-07-10希望这篇记录能帮助遇到同样问题的人少走弯路。

相关新闻

AI视频生成技术深度解析:扩散模型原理与可灵AI实战应用

AI视频生成技术深度解析:扩散模型原理与可灵AI实战应用

2026/9/3 5:34:29

可灵AI NEXTGEN颁奖典礼7月7日首尔举行:AI视频生成技术深度解析与实战应用在AI视频生成技术快速发展的当下,可灵AI作为行业领先的智能视频创作平台,将于7月7日在首尔举办NEXTGEN颁奖典礼。这一盛会不仅是对优秀AI创作作品的表彰,更…

AI音乐视频生成:从文本到视频的自动化流程拆解

AI音乐视频生成:从文本到视频的自动化流程拆解

2026/8/23 0:38:44

这类用 AI 工具生成音乐或视频来调侃技术圈事件的项目,最值得关注的不是娱乐效果,而是它背后反映出的技术实现路径。很多人看到“恶搞视频”会觉得只是娱乐,但真正有技术价值的,是它如何把文本描述、音乐生成、人声合成、视频剪辑…

仿美团外卖购物车模块 3 大核心难点解析:Handler消息机制、数据同步与动画实现

仿美团外卖购物车模块 3 大核心难点解析:Handler消息机制、数据同步与动画实现

2026/8/23 0:38:44

仿美团外卖购物车模块三大核心难点深度解析与实战优化在移动应用开发领域,外卖类应用的购物车模块堪称用户交互最复杂的组件之一。本文将聚焦Android平台下仿美团外卖购物车开发中的三个关键技术难点:Handler消息机制的精妙运用、多线程环境下的数据同步…

宠物领养小程序开发公司排名,宠物领养系统源码搭建

宠物领养小程序开发公司排名,宠物领养系统源码搭建

2026/9/3 5:36:36

宠物领养业务线上化发展之后,不少救助机构、宠物服务商家希望搭建属于自己的领养小程序,实现宠物信息发布、领养申请提交、资料审核、线上沟通等能力。市场上充斥着各类开发服务商榜单以及现成宠物领养系统源码,很多从业者会参考网络上的开发…

ChatTTS本地部署与实战:开源AI语音合成从入门到应用

ChatTTS本地部署与实战:开源AI语音合成从入门到应用

2026/9/3 5:36:36

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

Coze智能体开发实战:从零入门到六大项目落地

Coze智能体开发实战:从零入门到六大项目落地

2026/9/3 5:36:36

Coze智能体开发实战:从零入门到六大项目落地 在AI技术快速发展的今天,如何快速构建一个能够理解用户需求、具备专业知识的智能助手成为许多开发者和企业的迫切需求。Coze作为一款强大的AI智能体开发平台,正是解决这一问题的利器。本文将带你从…

宠物喂养领养系统哪家靠谱?宠物公益软件开发分析

宠物喂养领养系统哪家靠谱?宠物公益软件开发分析

2026/9/3 5:36:36

宠物喂养领养系统哪家靠谱?宠物公益软件开发分析 宠物公益类软件和普通商业宠物服务系统有着本质区别,核心侧重公益救助、无偿领养、科学喂养科普、救助溯源与爱心公示,而非商业交易盈利。目前市面上多数宠物系统以商业寄养、宠物售卖、付费服…

从“看见点云”到“理解物体”:精读 ULIP-2 的可扩展 3D 多模态预训练

从“看见点云”到“理解物体”:精读 ULIP-2 的可扩展 3D 多模态预训练

2026/9/3 5:36:36

论文:Le Xue, Ning Yu, Shu Zhang, Artemis Panagopoulou, Junnan Li, Roberto Martn-Martn, Jiajun Wu, Caiming Xiong, Ran Xu, Juan Carlos Niebles, Silvio Savarese. “ULIP-2: Towards Scalable Multimodal Pre-training for 3D Understanding.” CVPR 2024. …

安装 CMake、选择生成器并跑通命令行工作流

安装 CMake、选择生成器并跑通命令行工作流

2026/9/3 5:26:36

欢迎拜访:雾里看山-CSDN博客 本篇主题:安装 CMake、选择生成器并跑通命令行工作流 发布时间:2026.9.2 隶属专栏:CMake 目录这一篇要解决的问题安装 CMake在 Linux 上安装在 macOS 上安装在 Windows 上安装方式一:官方安…

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

2026/9/2 10:08:07

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

2026/9/2 12:11:52

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

2026/9/1 23:49:08

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

【原创】基于微信小程序+AI大模型+uni-app的宠物用品商城小程序(设计与实现)

【原创】基于微信小程序+AI大模型+uni-app的宠物用品商城小程序(设计与实现)

2026/9/3 0:06:18

摘要:随着电子商务与本地生活服务的普及,线上交易与店铺运营管理已成为常规业态。传统分散式进销存与人工对账方式存在流程割裂、库存难同步、促销规则难落地、经营数据难沉淀等弊端,难以支撑一体化的数字化运营。同类课题亦多见多商户在线商…

【原创】基于AI大模型+SpringBoot+Vue的宠物用品商城(设计与实现)

【原创】基于AI大模型+SpringBoot+Vue的宠物用品商城(设计与实现)

2026/9/3 0:06:18

摘要:随着电子商务与本地生活服务的普及,线上交易与店铺运营管理已成为常规业态。传统分散式进销存与人工对账方式存在流程割裂、库存难同步、促销规则难落地、经营数据难沉淀等弊端,难以支撑一体化的数字化运营。同类课题亦多见多商户在线商…

【原创】基于微信小程序+AI大模型+uni-app的节日礼品定制商城小程序(设计与实现)

【原创】基于微信小程序+AI大模型+uni-app的节日礼品定制商城小程序(设计与实现)

2026/9/3 0:06:18

摘要:随着电子商务与本地生活服务的普及,线上交易与店铺运营管理已成为常规业态。传统分散式进销存与人工对账方式存在流程割裂、库存难同步、促销规则难落地、经营数据难沉淀等弊端,难以支撑一体化的数字化运营。同类课题亦多见多商户在线商…

远程协作的工作台整理

远程协作的工作台整理

2026/9/2 6:21:32

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/2 6:21:32

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/3 5:20:28

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…