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

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

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

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

3 ответов


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

dir "%ProgramFiles%\Microsoft SDKs\Windows"

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


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

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows CurrentVersion

и его можно получить с помощью этого PowerShell one-liner:

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

enter image description here


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

#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" в версии Windows 8.1 SDK bthledef.h) тогда вам может потребоваться обойти эту ошибку, но не включать обходной путь при использовании Windows 10 SDK или выше.