2010-04-19 5 views
29

Ich habe vor kurzem mich entschieden c++ und win32 Programmierung zu lehren vb.net nach dem Lernen, und ich habe eine sehr einfache Frage bekommen:Wie kann ich die Version des auf meinem Computer installierten Windows SDK ermitteln?

Wie kann ich feststellen, welche Version der Windows SDK auf meinem Computer installiert ist?

Ich frage, damit ich die neueste Version installieren kann, wenn es nicht bereits installiert ist, bevor ich anfange, mit c++ herumzuspielen. Ich benutze Microsoft Visual Studio 2008 SP1 als meine IDE.

Antwort

31

auf Englisch locale mindestens:

dir "%ProgramFiles%\Microsoft SDKs\Windows" 

funktionieren sollte. Es ist sehr wahrscheinlich, dass mehrere Versionen installiert werden, wobei die richtige für einen Build nur von diesem Projekt angegeben werden kann.

+20

+1 - Denken Sie daran, auch "% ProgramFiles (x86)% \ Microsoft SDKs \ Windows" auf 64-Bit-Maschinen zu überprüfen. – user200783

+0

@PaulBaker: Das kann oder muss nicht notwendig sein, neuere Versionen des SDK scheinen in beiden eingerichtet zu sein. – Richard

+0

Wenn ich den v8.1 Ordner habe aber es ist nur ~ 2MB ist das 8.1 Framework nicht installiert? – user145400

18

Die aktuelle Version des Windows SDK wird in dem CurrentVersion Wert des folgenden Registrierungsschlüssels gespeichert:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows 

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows CurrentVersion

und es kann mit dieser Powershell Einzeiler abgerufen werden:

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

enter image description here

17

Wenn Sie beim Kompilieren ermitteln müssen, welche Version des Windows SDK verwendet wird, können Sie das Makro VER_PRODUCTBUILD verwenden, das in ntverp.h definiert ist. Zum Beispiel:

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

In den meisten Fällen soll dies nicht notwendig sein, da ein Produkt entwickelt werden soll mit einer bestimmten Plattform SDK zu bauen. Bei einigen großen Produkten kann es jedoch wünschenswert sein, mehrere Plattform-SDKs zu unterstützen. Dies kann besonders nützlich sein, wenn Sie von einem zum anderen migrieren. Wenn in einer Headerdatei ein Fehler auftritt (z. B. der falsche "#pragma pop" in der Windows 8.1 SDK-Version von bthledef.h), müssen Sie diesen Fehler möglicherweise umgehen, jedoch nicht die Problemumgehung bei Verwendung des Windows 10 SDK oder höher.

+0

Ich vermute, das ist, was die OP wollte, und es ist absolut das, was ich wollte. Vielen Dank! Ich habe Ihnen nur eine Stimme gegeben. –

Verwandte Themen