如何在编译时获取程序所使用的Windows SDK版本号
获取编译时使用的Windows SDK完整版本号
你当前的方法解析的WDK_NTDDI_VERSION是Windows操作系统的版本标识,并非SDK的实际build号(比如22621),所以得到的是10.0.12而非目标版本。要获取SDK的完整版本号(如10.0.22621.0),可以利用Windows SDK头文件中预定义的版本宏:
_WIN32_WINNT_MAJOR:主版本号(比如10)_WIN32_WINNT_MINOR:次版本号(比如0)_WIN32_WINNT_BUILD:Build号(比如22621)- 修订号通常为0(大部分SDK版本的修订号都是0)
代码实现(C++)
#include <iostream> #include <sstream> #include <windows.h> std::string GetSDKVersion() { std::ostringstream oss; oss << _WIN32_WINNT_MAJOR << "." << _WIN32_WINNT_MINOR << "." << _WIN32_WINNT_BUILD << ".0"; return oss.str(); } int main() { std::cout << "当前使用的Windows SDK版本:" << GetSDKVersion() << std::endl; return 0; }
代码实现(C)
#include <stdio.h> #include <windows.h> const char* GetSDKVersion() { static char versionStr[32]; snprintf(versionStr, sizeof(versionStr), "%d.%d.%d.0", _WIN32_WINNT_MAJOR, _WIN32_WINNT_MINOR, _WIN32_WINNT_BUILD); return versionStr; } int main() { printf("当前使用的Windows SDK版本:%s\n", GetSDKVersion()); return 0; }
说明
这些宏定义在Windows SDK的winnt.h头文件中,会根据你编译时选择的SDK版本自动填充对应的值。编译后运行程序,就能输出类似10.0.22621.0的完整SDK版本号。
内容的提问来源于stack exchange,提问作者Jabberwocky
相关产品推荐
相关产品推荐

