微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.

原文地址:https://www.jb51.cc/c/114904.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐