Как определить версию 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
и его можно получить с помощью этого PowerShell one-liner:
$(Get-Item "hklm:\SOFTWARE\Microsoft\Microsoft SDKs\Windows").GetValue("CurrentVersion")
Если во время компиляции необходимо определить, какая версия 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 или выше.