C/C++编程 VC、VS判断操作系统、获取系统版本。多种方法判断操作系统、查看系统版本。

本文通过多种方法获取、判断操作系统版本

获取系统版本号的有个GetVersion()、GetVersionEx()函数,判断操作系统版本有VerifyVersionInfo()

以上三种函数在Win7以上的系统变得不灵了,获取到的都是:6.2

对于使用VC、VS版本比较低的用户,可能并不支持 versionhelpers.h,即并不支持以下等函数直接来判断。

IsWindows7SP1OrGreater
IsWindows10OrGreater

详细请参考:https://docs.microsoft.com/zh-cn/windows/win32/sysinfo/version-helper-apis


一、GetVersion()、GetVersionEx()函数获取操作系统版本

#include <stdio.h>
#include <windows.h>

int main(void)
{
    DWORD dwVersion = 0;
    DWORD dwMajorVersion = 0;
    DWORD dwMinorVersion = 0;
    DWORD dwBuild = 0;

    dwVersion = GetVersion();

    // Get the Windows version.
    dwMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion)));
    dwMinorVersion = (DWORD)(HIBYTE(LOWORD(dwVersion)));

    // Get the build number.
    if (dwVersion < 0x80000000)
        dwBuild = (DWORD)(HIWORD(dwVersion));

    printf("GetVersion() : %d.%d (%d)\n",
           dwMajorVersion,
           dwMinorVersion,
           dwBuild);

    // GetVersionEx()
    OSVERSIONINFOEX os;
    os.dwOSVersionInfoSize=sizeof(OSVERSIONINFOEX);
    if(GetVersionEx((OSVERSIONINFO *)&os))
        printf("GetVersionEx() : %d.%d\n",os.dwMajorVersion,os.dwMinorVersion);

    return 0;
}

二、VerifyVersionInfo判断操作系统版本

//VS2008 编译测试通过
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>

/*
对Win7以上的系统不大管用
*/

int main(void)
{
    OSVERSIONINFOEXW osvi = {0};
    DWORDLONG dwlConditionMask = 0;
    ZeroMemory(&osvi, sizeof(osvi));
    osvi.dwOSVersionInfoSize = sizeof(osvi);
    osvi.dwMajorVersion = 6;  //Win主版本号
    osvi.dwMinorVersion = 1;  //次版本号
    VER_SET_CONDITION(dwlConditionMask, VER_MAJORVERSION, VER_EQUAL);
    VER_SET_CONDITION(dwlConditionMask, VER_MINORVERSION, VER_EQUAL);

    //判断返回值是否为win7,返回真为win7,否则返回0
    if( VerifyVersionInfo(&osvi, VER_MAJORVERSION | VER_MINORVERSION, dwlConditionMask) )
        printf("Win7\n");
    else
        printf("不是Win7\n");
    return 0;
}

三、通过 GetProcAddress 来获取操作系统版本号(推荐)

#include <stdio.h>
#include <windows.h>

/*
本例代码经过VC6.0下编译通过,并在XP、Win7、Win10上运行成功并获取到正确的系统版本号
*/

int main(void)
{
    typedef void(__stdcall*NTPROC)(DWORD*, DWORD*, DWORD*);
    HINSTANCE hinst = LoadLibrary(TEXT("ntdll.dll"));//加载DLL
    NTPROC GetNtVersionNumbers = (NTPROC)GetProcAddress(hinst, "RtlGetNtVersionNumbers");//获取函数地址
    DWORD dwMajor, dwMinor, dwBuildNumber;
    GetNtVersionNumbers(&dwMajor, &dwMinor, &dwBuildNumber);
    printf("Windows版本 : %d.%d\n",dwMajor,dwMinor);

    if (dwMajor == 10 && dwMinor == 0)
    {
        printf("Win10\n");
    }
    if (dwMajor == 6 && dwMinor == 1)
    {
        printf("Win7\n");
    }
    return 0;
}

四、Windows各系统版本列表

操作系统版本号
Windows 1010.0 *
Windows Server 201910.0 *
Windows Server 201610.0 *
Windows 8.16.3 *
Windows Server 2012 R26.3 *
Windows 86.2
Windows Server 20126.2
Windows 76.1
Windows Server 2008 R26.1
Windows Server 20086.0
Windows Vista6.0
Windows Server 2003 R25.2
Windows Server 20035.2
Windows XP 64位版本5.2
Windows XP5.1
Windows 20005.0

详细请参考:https://docs.microsoft.com/zh-cn/windows/win32/sysinfo/operating-system-version

 

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
CAD制图系统代码VC是使用Visual C++编程语言编写的CAD(Computer-Aided Design,计算机辅助设计)制图系统的源代码。 CAD制图系统是一种用于创建、编辑和查看图形和设计的软件应用程序。它可以应用于各种领域,如建筑设计、工程设计、机械设计等。VC则是Visual C++的缩写,是微软开发的一种基于C++语言的集成开发环境。使用VC编程可以方便地创建图形用户界面(GUI),并且具有强大的功能和灵活的扩展性。 CAD制图系统代码VC可以包含以下几个方面的内容: 1. 图形库引用:使用VC编程时,可以引用各种图形库来实现绘图功能,如OpenGL、DirectX等。这些图形库提供了丰富的函数和类,可以实现各种图形绘制、变换和操作。 2. 用户界面设计:VC提供了可视化的界面设计器,可以通过拖放方式设计和布局用户界面的各个组件,如按钮、菜单、文本框等。通过编写代码,可以为这些组件添加事件处理函数,实现与用户的交互。 3. 绘图功能实现:利用VC编程,可以实现绘制各种几何图形的功能,如线段、圆、多边形等。可以通过鼠标或键盘输入的方式捕捉用户的绘图操作,并根据输入的坐标和参数进行图形绘制。 4. 编辑和变换功能:CAD制图系统代码中还包括了编辑和变换图形的功能,如移动、旋转、缩放等。通过编写代码,可以实现对图形的选择、移动和变换等操作。 总之,CAD制图系统代码VC是用Visual C++编写的一套实现CAD制图功能的软件源代码,通过编程实现了图形绘制、用户界面设计、编辑和变换等功能。这样的源代码可以作为基础,供开发者参考和扩展,实现更复杂的CAD应用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值