【发布时间】:2011-02-09 13:55:58
【问题描述】:
如何确定我的计算机上安装了哪个版本的Windows SDK?
我问的是如果尚未安装最新版本,我可以安装它。
【问题讨论】:
如何确定我的计算机上安装了哪个版本的Windows SDK?
我问的是如果尚未安装最新版本,我可以安装它。
【问题讨论】:
查看控制面板/卸载程序。 “Windows 软件开发工具包 - Windows X.X.X.X”(其中 X.X.X.X 是版本)。它将列在您机器上安装的所有其他软件中。
【讨论】:
如果您安装了 Visual Studio,您可以打开一个 Visual Studio 解决方案(或自己创建一个),然后在解决方案资源管理器中右键单击该解决方案,然后选择 Retarget Solution。该菜单应为您提供可用 Windows SDK 版本的下拉列表。
【讨论】:
如果您需要在编译时确定正在使用的 Windows SDK 的主要操作系统版本,那么您可以使用在 ntverp.h 中定义的 VER_PRODUCTBUILD 宏。例如:
#include <ntverp.h>
#if VER_PRODUCTBUILD > 9600
// Windows 10+ SDK code goes here
#else
// Windows 8.1- SDK code goes here
#endif
在大多数情况下,这不是必需的,因为产品应该设计为使用特定平台 SDK 构建。但是对于一些大型产品,可能需要支持多个平台的 SDK。这在从一个迁移到另一个时特别有用。如果头文件中存在错误(例如 Windows 8.1 SDK 版本的 bthledef.h 中的虚假“#pragma pop”),那么您可能需要解决此错误,但在使用 Windows 10 SDK 时不包括该解决方法或更高。如果未安装所需的 SDK 版本,此技术还可用于提供有用的错误消息。
请注意,VER_PRODUCTBUILD 仅提供主要操作系统版本信息,例如 8.1 与 10。这意味着 VER_PRODUCTBUILD 越来越无用,因为它不会随着 Windows 10 的更新而改变。因此,更可能查看的是 sdkddkver。 h 和 NTDDI_WIN10_* 宏。从 Windows 10.0.17763.0 SDK 开始,现在定义了 NTDDI_WIN10_RS5。所以,写这样的代码:
#include <sdkddkver.h>
#if !defined(NTDDI_WIN10_RS5)
#error Windows 10.0.17763.0 SDK is required
#endif
【讨论】:
WDK_NTDDI_VERSION了!
对于最新版本,请在此注册表项下检查:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Kits
或以下:
C:\Program Files (x86)\Microsoft SDKs\Windows Kits
【讨论】:
【讨论】:
Get-Item : Cannot find path 'HKLM:\SOFTWARE\Microsoft\Microsoft SDKs\Windows' because it does not exist. - 运行 Windows 10,知道会发生什么吗?
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Microsoft SDKs\Windows(注意中间的WOW6432Node)
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Microsoft SDKs\Windows\ 也适用于我。
至少在英语语言环境中:
dir "%ProgramFiles%\Microsoft SDKs\Windows"
应该可以。很可能会安装多个版本,只有该项目才能指定一个构建的正确版本。
【讨论】: