2010-04-19 657 views
29

我最近剛決定學習vb.net後自學c++win32編程,和我有一個非常簡單的問題:如何確定我的計算機上安裝的Windows SDK的版本?

如何確定已安裝在我的電腦是什麼版本的Windows SDK的?

我問,所以我可以安裝最新版本,如果它尚未安裝,在我開始玩c++之前。我正在使用Microsoft Visual Studio 2008 SP1作爲我的IDE

回答

31

在英語語言環境至少包括:

dir "%ProgramFiles%\Microsoft SDKs\Windows" 

應該工作。很有可能會安裝多個版本,這是一個只能由該項目指定的版本。

+20

+1 - 還記得在64位機器上檢查「%ProgramFiles(x86)%\ Microsoft SDKs \ Windows」。 – user200783 2010-04-19 07:41:41

+0

@PaulBaker:這可能是也可能不是必需品,SDK的更新版本似乎都設置在兩者中。 – Richard 2010-04-19 08:25:16

+0

如果我有v8.1文件夾,但只有~2MB是8.1框架沒有安裝? – user145400 2017-05-11 15:46:48

18

在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

17

如果您需要確定在編譯時使用的是哪個版本的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 

在大多數情況下,因爲一個產品的設計應建立與特定平臺SDK這不應該是必要的。但對於某些大型產品,可能需要支持多種平臺SDK。從一個移植到另一個時,這可能特別有用。如果頭文件中存在錯誤(例如bthledef.h的Windows 8.1 SDK版本中的虛假「#pragma pop」),則可能需要解決此錯誤,但不包括使用Windows 10 SDK時的解決方法或更高。

+0

我懷疑這是OP想要的,而這絕對是我想要的。謝謝!我剛剛給你一個投票。 – 2016-05-06 23:55:16

相關問題