web-dev-qa-db-fra.com

Comment puis-je déterminer la version du SDK Windows installé sur mon ordinateur?

J'ai très récemment décidé de m'enseigner c++ et win32 programmation après apprentissage vb.net, et j'ai une question très simple:

Comment puis-je déterminer quelle version du Windows SDK est installé sur mon ordinateur?

Je demande pour pouvoir installer la dernière version si elle n'est pas déjà installée, avant de commencer à jouer avec c++. J'utilise Microsoft Visual Studio 2008 SP1 comme mon IDE.

46
Matt

Sur les paramètres régionaux anglais au moins:

dir "%ProgramFiles%\Microsoft SDKs\Windows"

devrait marcher. Il est très probable qu'il y aura plusieurs versions installées, ce qui est la bonne pour une seule génération qui ne peut être spécifiée que par ce projet.

41
Richard

La version actuelle du SDK Windows est stockée dans la valeur CurrentVersion de la clé de registre suivante:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows CurrentVersion

et il peut être récupéré à l'aide de cette doublure PowerShell:

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

enter image description here

29
Day

Si vous devez déterminer, lors de la compilation, quelle version principale du système d'exploitation du SDK Windows est utilisée, vous pouvez utiliser la macro VER_PRODUCTBUILD, qui est définie dans ntverp.h. Par exemple:

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

Dans la plupart des cas, cela ne devrait pas être nécessaire car un produit doit être conçu pour être construit avec une plate-forme SDK particulière. Mais pour certains grands produits, il peut être souhaitable de prendre en charge plusieurs SDK de plate-forme. Cela peut être particulièrement utile lors de la migration de l'un à l'autre. S'il y a un bogue dans un fichier d'en-tête (tel que le faux "#pragma pop" dans la version SDK Windows 8.1 de bthledef.h), vous devrez peut-être contourner ce bogue, mais ne pas inclure la solution de contournement lors de l'utilisation du SDK Windows 10 ou plus. Cette technique peut également être utilisée pour afficher des messages d'erreur utiles si la version du SDK requise n'est pas installée.

Notez que VER_PRODUCTBUILD ne donne que des informations sur la version principale du système d'exploitation, comme 8.1 contre 10. Cela signifie que VER_PRODUCTBUILD est de plus en plus inutile car il ne change pas avec les mises à jour de Windows 10. Par conséquent, la chose la plus probable à regarder est sdkddkver.h et le Macros NTDDI_WIN10_ *. Depuis le SDK Windows 10.0.17763.0, NTDDI_WIN10_RS5 est désormais défini. Donc, écrivez du code comme ceci:

#include <sdkddkver.h>
#if !defined(NTDDI_WIN10_RS5)
    #error Windows 10.0.17763.0 SDK is required
#endif
28
Bruce Dawson

Pour les dernières versions, vérifiez sous cette clé de regedit:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Kits

ou sous:

C:\Program Files (x86)\Microsoft SDKs\Windows Kits
4
T.Todua

Si Visual Studio est installé, vous pouvez ouvrir une solution Visual Studio (ou en créer une vous-même), puis cliquer avec le bouton droit sur la solution dans l'Explorateur de solutions et sélectionner Retarget Solution. Le menu devrait vous donner une liste déroulante des versions disponibles du SDK Windows.

0
Casey Kuball