21xrx.com
2025-03-27 17:30:05 Thursday
文章检索 我的文章 写文章
C++如何判断操作系统版本
2023-07-03 07:20:36 深夜i     7     0
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类来获取操作系统版本信息,并将其输出到控制台。使用第三方库可以让我们的代码更加简洁,但也增加了依赖库的数量。

  
  

评论区