2010-04-19 26 views
29

he decidido hace muy poco tiempo para enseñar a mí mismo c++ y win32 programación después de aprender vb.net, y tengo una pregunta muy simple:¿Cómo puedo determinar la versión del SDK de Windows instalado en mi computadora?

¿Cómo puedo determinar qué versión de la Windows SDK está instalado en el ordenador?

Pregunto para que pueda instalar la última versión si no está instalada, antes de que empiece a jugar con c++. Estoy usando Microsoft Visual Studio 2008 SP1 como mi IDE.

Respuesta

31

de la configuración regional Inglés al menos:

dir "%ProgramFiles%\Microsoft SDKs\Windows" 

debería funcionar. Es bastante probable que haya múltiples versiones instaladas, que es la correcta para una compilación solo puede ser especificada por ese proyecto.

+20

+1 - Recuerde marcar también "% ProgramFiles (x86)% \ Microsoft SDKs \ Windows" en máquinas de 64 bits. – user200783

+0

@PaulBaker: Eso puede o no ser necesario, versiones más nuevas del SDK parecen establecerse en ambos. – Richard

+0

Si tengo la carpeta v8.1 pero solo es ~ 2MB, ¿el marco 8.1 no está instalado? – user145400

18

La versión actual del SDK de Windows se almacena en el valor CurrentVersion de la siguiente clave del registro:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows 

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows CurrentVersion

y se puede recuperar mediante este PowerShell de una sola línea:

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

enter image description here

17

Si necesita determinar, durante la compilación, qué versión del SDK de Windows está usando, puede usar la macro VER_PRODUCTBUILD, que se define en ntverp.h. Por ejemplo:

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

En la mayoría de los casos esto no debería ser necesario que un producto debe diseñarse para construir con un SDK de la plataforma en particular. Sin embargo, para algunos productos grandes puede ser deseable admitir múltiples SDK de plataforma. Esto puede ser particularmente útil al migrar de uno a otro. Si hay un error en un archivo de encabezado (como el falso "#pragma pop" en la versión de Windows 8.1 SDK de bthledef.h), entonces es posible que deba solucionar este error, pero no incluir la solución al usar el SDK de Windows 10 o mas alto.

+0

Sospecho que esto es lo que el OP quería, y es absolutamente lo que yo quería. ¡Gracias! Acabo de darte una votación positiva. –

Cuestiones relacionadas