C++ ISWindows10OrCreater()在Windows 10上失败
我编写了一段代码,使用GetVersionEx函数检索windows主版本和次版本,但此函数始终返回主版本6和次版本2 MSDN表示将使用版本帮助器API查找当前操作系统。我在windows 8.1中构建了该项目,并引用了windows 8.1工具包路径以包含VersionHelpers头文件。VersionHelpers头文件中没有可用的IsWindows10OrCreater()函数 所以我从GitHub下载了VersionHelper头文件,并将其添加到我的项目中。编译错误消失,但ISWindows10OrCreater函数失败C++ ISWindows10OrCreater()在Windows 10上失败,c++,windows,winapi,visual-c++,C++,Windows,Winapi,Visual C++,我编写了一段代码,使用GetVersionEx函数检索windows主版本和次版本,但此函数始终返回主版本6和次版本2 MSDN表示将使用版本帮助器API查找当前操作系统。我在windows 8.1中构建了该项目,并引用了windows 8.1工具包路径以包含VersionHelpers头文件。VersionHelpers头文件中没有可用的IsWindows10OrCreater()函数 所以我从GitHub下载了VersionHelper头文件,并将其添加到我的项目中。编译错误消失,但ISWi
我做错了什么吗?VersionHelper函数只是
VerifyVersionInfo()
的包装。从Windows 10开始,VerifyVersionInfo()
现在遵循与GetVersionEx()
相同的版本显示规则。要获得真正的操作系统版本,而不考虑其表现形式,您可以使用RtlGetVersion()
,NetServerGetInfo()
,或netkstagetinfo()
。您是从哪里下载VersionHelper.h的?GitHub不仅仅承载一个项目……如果您希望GetVersionEx返回正确的版本,您应该在清单中指定Windows 8.1/10支持。Microsoft长期以来一直承诺,他们将通过版本检查。在Win10中完全执行的。恢复版本10的唯一方法是将程序构建为Win10。项目>属性>链接器>系统>所需的最低版本必须设置为“10.0”。这完全没有意义并不是偶然的:)唯一的另一种方法是从诸如kernel32.DLL之类的DLL获取版本资源。为了跟进@Hans Passant的评论,Raymond Chen关于为什么Windows 95称自己为3.95而不是4.0版的文章对为什么版本号报告在Windows中很奇怪有一些背景知识。TL;博士;-人们写的版本检查是错误的,所以API只是报告了一个“错误”的版本号,这样新的操作系统就可以运行旧的软件。清单没有声明子系统版本。它可能有
元素,但它只在Win10的预览版本中起作用,它再次被RTM删除。如何使用RtlGetVersion()
获得操作系统版本?