Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

По крайней мере на английском языке:

dir "%ProgramFiles%\Microsoft SDKs\Windows"

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

Ответ 2

Текущая версия 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

Ответ 3

Если вам нужно при компиляции определить, какая основная версия ОС 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

Ответ 4

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

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Kits

или ниже:

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

Ответ 5

Если у вас установлена Visual Studio, вы можете открыть решение Visual Studio (или создать его самостоятельно), затем щелкнуть правой кнопкой мыши решение в обозревателе решений и выбрать Retarget Solution. Меню должно предоставить вам выпадающий список доступных версий Windows SDK.