21xrx.com
2024-12-22 22:36:50 Sunday
登录
文章检索 我的文章 写文章
C++如何判断操作系统版本
2023-07-03 07:20:36 深夜i     --     --
C++ 操作系统 判断 版本 条件语句

在C++中,判断操作系统版本的方法有很多种。本文将介绍三种常见的方法。

方法一:使用系统函数

在C++中,我们可以使用系统函数来获取操作系统版本。具体代码如下:


#include <Windows.h>

#include <iostream>

int main()

{

  OSVERSIONINFOEX osvi;

  ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));

  osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);

  GetVersionEx((LPOSVERSIONINFO)&osvi);

  if (osvi.dwMajorVersion == 10 && osvi.dwMinorVersion == 0)

  

    std::cout << "Windows 10" << std::endl;

  

  else if (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 3)

  

    std::cout << "Windows 8.1" << std::endl;

  

  else if (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 2)

  

    std::cout << "Windows 8" << std::endl;

  

  else if (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 1)

  

    std::cout << "Windows 7" << std::endl;

  

  else if (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 0)

  

    std::cout << "Windows Vista" << std::endl;

  

  else if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1)

  

    std::cout << "Windows XP" << std::endl;

  

  else if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0)

  

    std::cout << "Windows 2000" << std::endl;

  

  else

  

    std::cout << "Unknown" << std::endl;

  

  return 0;

}

这段代码中,我们使用了系统函数GetVersionEx来获取操作系统版本信息,然后根据不同的版本号输出不同的操作系统名称。

方法二:读取注册表

除了使用系统函数,我们还可以通过读取注册表来获取操作系统版本信息。具体代码如下:


#include <Windows.h>

#include <iostream>

int main()

{

  HKEY hKey;

  DWORD dwType;

  DWORD dwSize = sizeof(DWORD);

  DWORD dwValue = 0;

  RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", 0, KEY_QUERY_VALUE, &hKey);

  RegQueryValueEx(hKey, "CurrentMajorVersionNumber", NULL, &dwType, (LPBYTE)&dwValue, &dwSize);

  if (dwValue == 10)

  

    std::cout << "Windows 10" << std::endl;

  

  else if (dwValue == 6)

  {

    RegQueryValueEx(hKey, "CurrentMinorVersionNumber", NULL, &dwType, (LPBYTE)&dwValue, &dwSize);

    switch (dwValue)

    

    case 3:

      std::cout << "Windows 8.1" << std::endl;

      break;

    case 2:

      std::cout << "Windows 8" << std::endl;

      break;

    case 1:

      std::cout << "Windows 7" << std::endl;

      break;

    case 0:

      std::cout << "Windows Vista" << std::endl;

      break;

    default:

      std::cout << "Unknown" << std::endl;

      break;

    

  }

  else if (dwValue == 5)

  {

    RegQueryValueEx(hKey, "CurrentVersion", NULL, &dwType, (LPBYTE)&dwValue, &dwSize);

    if (dwValue == 1)

    

      std::cout << "Windows XP" << std::endl;

    

    else if (dwValue == 0)

    

      std::cout << "Windows 2000" << std::endl;

    

    else

    

      std::cout << "Unknown" << std::endl;

    

  }

  else

  

    std::cout << "Unknown" << std::endl;

  

  RegCloseKey(hKey);

  return 0;

}

这段代码中,我们使用了Windows API中的RegOpenKeyEx和RegQueryValueEx函数来读取注册表中的值,然后根据不同的值输出不同的操作系统名称。

方法三:使用第三方库

除了自己编写代码来获取操作系统版本信息,我们还可以使用第三方库。例如,使用Boost库中的Boost.System库可以很方便地获取操作系统版本信息。具体代码如下:


#include <iostream>

#include <boost/system.hpp>

int main()

{

  boost::system::error_code ec;

  boost::system::system_error se(ec);

  std::string os_name = boost::system::get_generic_category().message(se.code().value());

  std::cout << os_name << std::endl;

  return 0;

}

这段代码中,我们使用了Boost.System库中的get_generic_category函数和system_error类来获取操作系统版本信息,并将其输出到控制台。使用第三方库可以让我们的代码更加简洁,但也增加了依赖库的数量。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复