C检查Windows 10

我正在制作一个应用到操作系统的应用程序,但我似乎不能缩小 Windows 10,它出现在Windows 8上.我已经在Window 10 Pro上测试了,结果是Major:6 Min:2.还有另一种方法来检查它是否更有效率的Windows 10?

编辑:找到一个正常工作的API RtlGetVersion()适用于所有操作系统的正确!

#include "windows.h"
#include <iostream>
using namespace std;
BOOL EqualsMajorVersion(DWORD majorVersion)
{
OsveRSIONINFOEX osversionInfo;
::ZeroMemory(&osversionInfo,sizeof(OsveRSIONINFOEX));
osversionInfo.dwOsversionInfoSize = sizeof(OsveRSIONINFOEX);
osversionInfo.dwMajorVersion = majorVersion;
ULONGLONG maskCondition = ::VerSetConditionMask(0,VER_MAJORVERSION,VER_EQUAL);
return ::VerifyVersionInfo(&osversionInfo,maskCondition);
}
BOOL EqualsMinorVersion(DWORD minorVersion)
{
OsveRSIONINFOEX osversionInfo;
::ZeroMemory(&osversionInfo,sizeof(OsveRSIONINFOEX));
osversionInfo.dwOsversionInfoSize = sizeof(OsveRSIONINFOEX);
osversionInfo.dwMinorVersion = minorVersion;
ULONGLONG maskCondition = ::VerSetConditionMask(0,VER_MInorVERSION,maskCondition);
}
int main()
{
    if (EqualsMajorVersion(7) && EqualsMinorVersion(1))
        printf("Maj:7 Min:1");
    else if (EqualsMajorVersion(7) && EqualsMinorVersion(0))
        printf("Maj:7 Min:0");
    else if (EqualsMajorVersion(6) && EqualsMinorVersion(7))
        printf("Maj:6 Min:7");
    else if (EqualsMajorVersion(6) && EqualsMinorVersion(6))
        printf("Maj:6 Min:6");
    else if (EqualsMajorVersion(6) && EqualsMinorVersion(5))
        printf("Maj:6 Min:5");
    else if (EqualsMajorVersion(6) && EqualsMinorVersion(4))
        printf("Maj:6 Min:4");
    else if (EqualsMajorVersion(6) && EqualsMinorVersion(3))
        printf("Maj:6 Min:3");
    else if (EqualsMajorVersion(6) && EqualsMinorVersion(2))
        printf("Maj:6 Min:2");
    else if (EqualsMajorVersion(6) && EqualsMinorVersion(1))
        printf("Maj:6 Min:1");
    else if (EqualsMajorVersion(6) && EqualsMinorVersion(0))
        printf("Maj:6 Min:0");
    else if (EqualsMajorVersion(5) && EqualsMinorVersion(2))
        printf("Maj:5 Min:2");
    else if (EqualsMajorVersion(5) && EqualsMinorVersion(1))
        printf("Maj:5 Min:1");
    else
        printf("OS not on list...");
    getchar();
}

解决方法

这很有讽刺意味,但…
BOOL WINAPI IsWindows10OrGreater(void);

文件here.

编辑:雷蒙德的天才似乎有与原型相关的问题,或换句话说,OP得到一个未定义的符号错误,如评论中所述.还有这个功能

BOOL WINAPI IsWindowsversionorGreater(
    WORD wMajorVersion,WORD wMinorVersion,WORD wServicePackMajor
);

而对于Windows 10,wMajorVersion,wMinorVersion和wServicePackMajor分别为10,0和0.

功能的文档here.

第二个编辑:它是官方的:IsWindowsversionorGreater()和GetVersionEx()从8.1起破坏.使用IsWindowsXXXOrGreater(),而XXX可以是XP,XPSP1,XPSP2,XPSP3,Vista,VistaSP1,VistaSP2,7,7SP1,8,8Point1,10或Server.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...