试图从C代码获取Windows版本

时间:2018-09-26 07:11:23

标签: c windows visual-studio visual-studio-2012

我正在使用C应用程序(不是c ++)。基本上,代码在* .c文件中。我想向该文件添加另一个功能,以检查运行我的应用程序的Windows操作系统版本。我正在尝试使用下面介绍的versionhelper函数-https://docs.microsoft.com/en-us/windows/desktop/sysinfo/version-helper-apis。但是,当我尝试在头文件下面添加文件时,出现编译错误,提示-无法打开源文件“ VersionHelpers.h”-

 #include <VersionHelpers.h>

我认为这是因为我的文件是C文件。有什么办法可以从C代码读取Windows OS版本? (不是C ++)

2 个答案:

答案 0 :(得分:2)

VersionHelpers.h只是一个内联头文件,它使用VerifyVersionInfo进行常见检查。您可以直接使用可C调用的API。

您还需要注意GetVersionVerifyVersionInfo函数受内置的appcompat版本约束的事实。有关详细信息,请参见Manifest Madness

当然,真正的问题是您实际上将如何处理这些信息?

这是否是“您必须很高才能骑乘”测试?如果是这样,VerifyVersionInfo是执行此操作的方式,也是VersionHelpers.h中代码的作用。

这是“我需要遥测或日志文件的版本”测试吗?在这种情况下,您可能要使用GetVersionEx并禁止弃用警告。确保不要根据该值做出任何运行时决策。对于UWP应用,您将使用AnalyticsInfo

这是否是“我正在检查使用特定OS组件是否安全?”如果是这样,可能有比操作系统检查更好的方法。

请参见What’s in a version number?

  

VersionHelpers.h标头已添加到VS 2013或更高版本的Windows 8.1 SDK中。 Windows 10 SDK的每个版本中也都有它。它与.c以及.cpp文件兼容。

答案 1 :(得分:1)

VersionHelpers.h来自Window 8.1 SDK(2014)。它没有随VS2012一起提供。您必须手动安装它,或更新到当前的Visual Studio版本。