Как определить версию Windows SDK, установленную на моем компьютере? - PullRequest
44 голосов
/ 19 апреля 2010

Я совсем недавно решил научиться программировать c++ и win32 после изучения vb.net, и у меня есть очень простой вопрос:

Как определить, какая версия Windows SDK установлена ​​на моем компьютере?

Я прошу, чтобы я мог установить последнюю версию, если она еще не установлена, прежде чем я начну играть с c++. Я использую Microsoft Visual Studio 2008 SP1 как мой IDE.

Ответы [ 4 ]

40 голосов
/ 19 апреля 2010

В английской локали не менее:

dir "%ProgramFiles%\Microsoft SDKs\Windows"

должно работать. Вполне вероятно, что будет установлено несколько версий, и эта версия может быть указана только этим проектом.

28 голосов
/ 17 июля 2015

Если вам нужно при компиляции определить, какая основная версия ОС Windows SDK используется, вы можете использовать макрос VER_PRODUCTBUILD, который определен в ntverp.h. Например:

#include <ntverp.h>
#if VER_PRODUCTBUILD > 9600
// Windows 10+ SDK code goes here
#else
// Windows 8.1- SDK code goes here
#endif

В большинстве случаев в этом нет необходимости, поскольку продукт должен быть спроектирован для сборки с определенной платформой SDK. Но для некоторых крупных продуктов может потребоваться поддержка нескольких платформ SDK. Это может быть особенно полезно при переходе от одного к другому. Если в заголовочном файле есть ошибка (например, фиктивная "#pragma pop" в версии bthledef.h для Windows 8.1 SDK), возможно, вам придется обойти эту ошибку, но не включать обходной путь при использовании 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
28 голосов
/ 06 января 2015

Текущая версия Windows SDK хранится в значении CurrentVersion следующего раздела реестра:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows CurrentVersion

и его можно получить с помощью однострочной оболочки PowerShell:

$(Get-Item "hklm:\SOFTWARE\Microsoft\Microsoft SDKs\Windows").GetValue("CurrentVersion")

enter image description here

4 голосов
/ 21 ноября 2018

Для последних версий проверьте под этим ключом regedit:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Kits

или меньше:

C:\Program Files (x86)\Microsoft SDKs\Windows Kits
...