如何确定计算机上安装的Windows SDK的版本?

Mat*_*att 46 c++ winapi visual-studio-2008-sp1

我最近决定在学习之后自学c++win32编程vb.net,我有一个非常简单的问题:

如何确定Windows SDK计算机上安装的版本?

我问,所以我可以安装最新版本,如果它还没有安装,在我开始玩之前c++.我Microsoft Visual Studio 2008 SP1用作我的IDE.

Ric*_*ard 41

至少在英语语言环境中:

dir "%ProgramFiles%\Microsoft SDKs\Windows"
Run Code Online (Sandbox Code Playgroud)

应该管用.很可能会安装多个版本,这对于一个版本只能由该项目指定.

  • +1 - 还记得在64位计算机上检查"%ProgramFiles(x86)%\ Microsoft SDKs\Windows". (34认同)
  • Windows 10 SDK 版本 10.0.17763.1 已安装在“%\Program Files (x86)\Windows Kits\10”文件夹中 (6认同)

Day*_*Day 31

当前版本的Windows SDK存储在CurrentVersion以下注册表项的值中:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows
Run Code Online (Sandbox Code Playgroud)

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows CurrentVersion

并且可以使用此PowerShell单行检索它:

$(Get-Item "hklm:\SOFTWARE\Microsoft\Microsoft SDKs\Windows").GetValue("CurrentVersion")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • `Get-Item:找不到路径 'HKLM:\SOFTWARE\Microsoft\Microsoft SDKs\Windows',因为它不存在。` - 运行 Windows 10,知道可能会发生什么吗? (2认同)
  • @YousufAzad,我参加聚会很晚,但是(再次)是Win32 / Win64组。寻找`HKEY_LOCAL_MACHINE \ SOFTWARE \ WOW6432Node \ Microsoft \ Microsoft SDKs \ Windows`(注意中间的`WOW6432Node`) (2认同)

Bru*_*son 28

如果您需要在编译时确定正在使用的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
Run Code Online (Sandbox Code Playgroud)

在大多数情况下,这不应该是必要的,因为产品应该设计为使用特定平台SDK构建.但对于某些大型产品,可能需要支持多平台SDK.当从一个迁移到另一个时,这可能特别有用.如果头文件中存在错误(例如bthledef.h的Windows 8.1 SDK版本中的伪造"#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
Run Code Online (Sandbox Code Playgroud)


T.T*_*dua 9

对于最新版本,请在此注册表项下检查:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Kits
Run Code Online (Sandbox Code Playgroud)

或以下:

C:\Program Files (x86)\Microsoft SDKs\Windows Kits
Run Code Online (Sandbox Code Playgroud)