¿Cómo instalar la versión SDK de Windows?

¿Cómo instalar la versión SDK de Windows?

En idioma inglés al menos:

dir "%ProgramFiles%\Microsoft SDKs\Windows"

Deberia trabajar. Es muy probable que haya varias versiones instaladas, cuál es la correcta para una compilación que solo puede especificar ese proyecto.


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

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows

y se puede recuperar usando este PowerShell one-liner:

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


Si necesita determinar, durante la compilación, qué versión principal del sistema operativo del SDK de Windows se está utilizando, puede utilizar 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 porque un producto debe estar diseñado para compilarse con un SDK de plataforma en particular. Sin embargo, para algunos productos grandes, es posible que se desee admitir SDK de múltiples plataformas. 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), es posible que deba solucionar este error, pero no incluir la solución alternativa cuando use Windows 10 SDK o mas alto. Esta técnica también se puede usar para generar mensajes de error útiles si la versión SDK requerida no está instalada.

Tenga en cuenta que VER_PRODUCTBUILD solo proporciona información sobre la versión principal del sistema operativo, como 8.1 frente a 10. Eso significa que VER_PRODUCTBUILD es cada vez más inútil, ya que no cambia con las actualizaciones de Windows 10. Por lo tanto, lo más probable es ver sdkddkver.h y el macros NTDDI_WIN10_*. A partir de Windows 10.0.17763.0 SDK NTDDI_WIN10_RS5 ahora está definido. Entonces, escribe un código como este:

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