Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ ISWindows10OrCreater()在Windows 10上失败_C++_Windows_Winapi_Visual C++ - Fatal编程技术网

C++ ISWindows10OrCreater()在Windows 10上失败

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

我编写了一段代码,使用GetVersionEx函数检索windows主版本和次版本,但此函数始终返回主版本6和次版本2

MSDN表示将使用版本帮助器API查找当前操作系统。我在windows 8.1中构建了该项目,并引用了windows 8.1工具包路径以包含VersionHelpers头文件。VersionHelpers头文件中没有可用的IsWindows10OrCreater()函数

所以我从GitHub下载了VersionHelper头文件,并将其添加到我的项目中。编译错误消失,但ISWindows10OrCreater函数失败


我做错了什么吗?

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()
获得操作系统版本?