Xié Lóng

文章 分类 评论
17 3 3

站点介绍

随缘更新的博客

Win10安装VS 2022时导致Windows Kits路径错误

Xié Lóng 2022-06-19 309 0条评论 技术 VS

首页 / 正文

谈谈我前段时间装VS 2022遇到的一个问题。
从VS 2019转到VS 2022或者两者共存时,有可能会遇到一些问题,比如我安装完后Windows Kits路径在注册表中的值就从 C:\Program Files (x86)\Windows Kits\10 变成了 C:\Program Files\Windows Kits\10 ,从而导致部分头文件找不到的问题。
之前也遇到过一个 类似问题 ,或许原因是相似的。

Windowws SDK (也称Windows Kits)是在Windows 10/11系统上进行Win32应用与UWP应用开发所需的软件开发套件(SDK),用于提供相关的开发环境(库与头文件等)。

正常情况下,在Visual Studio Installer中选择安装C++桌面开发或通用Windows程序开发时会默认选择一个适合当前Windows系统版本的Windows SDK进行安装。

该问题表现为用VS 2022写程序出现找不到stddef.h等文件的错误,但是用VS 2019就没有问题。
网上的解决方法通常是修改项目的包含路径,或者将文件夹复制一份到对应缺失的目录下,或者是重装SDK。
但是问题的具体原因还没找到,我决定一探究竟。

先查看一下VC++包含目录,发现里面关于Windows Kits的路径存在 C:\Program Files (x86)\Windows Kits\10\C:\Program Files\Windows Kits\10\ 两种值。
包含目录.png

检查一下SDK安装目录,确认我的SDK是安装在 C:\Program Files (x86)\Windows Kits\10\ 下面的。
上面路径中很明显 C:\Program Files\Windows Kits\10\Include\10.0.19041.0\ucrt 是有问题的,ucrt即Universal C RunTime(通用C运行时)。
在右边的宏里面,UCRT相关的路径很多也都是 C:\Program Files\

经过多番查找,我找到了解决方法。
记录 Windows Kits 路径的注册表项为 KitsRoot10 ,存在于两个地方,分别在 \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Kits\Installed Roots\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows Kits\Installed Roots 下面,大概对应64位程序与32位程序。
位于 \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Kits\Installed Roots 下的 KitsRoot10 的值莫名其妙变成了 C:\Program Files\Windows Kits\10\ ,而WOW6432Node下的值是正确的。
把该值改成SDK实际安装的路径后,再打开VS问题就解决了。

这大概能解释为什么VS 2022会报错而2019不会,因为VS 2019是32位程序,优先找WOW6432Node下的值也无可厚非吧,而VS 2022可是高贵的64位程序,自然是先找64位的值。
所以为什么装了VS 2022后 KitsRoot10 变成了 C:\Program Files\Windows Kits\10\

评论(0)

日历

2023年12月

     12
3456789
10111213141516
17181920212223
24252627282930
31      

友情链接

文章目录

推荐关键字: VS C++ Wallpaper Linux QT WSL typecho 种花