如何用C++检测操作系统及其版本
时间: 2023-12-22 20:02:37 浏览: 23
可以使用C++中的系统调用函数来检测操作系统及其版本。以下是一个简单的示例代码:
```
#include <iostream>
#include <windows.h>
int main()
{
OSVERSIONINFO osvi;
ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
if (GetVersionEx(&osvi))
{
switch (osvi.dwPlatformId)
{
case VER_PLATFORM_WIN32_NT:
if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0)
{
std::cout << "Windows 2000" << std::endl;
}
else if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1)
{
std::cout << "Windows XP" << std::endl;
}
else if (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 0)
{
std::cout << "Windows Vista" << std::endl;
}
else if (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 1)
{
std::cout << "Windows 7" << std::endl;
}
else if (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 2)
{
std::cout << "Windows 8" << std::endl;
}
else if (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 3)
{
std::cout << "Windows 8.1" << std::endl;
}
else if (osvi.dwMajorVersion == 10 && osvi.dwMinorVersion == 0)
{
std::cout << "Windows 10" << std::endl;
}
else
{
std::cout << "Unknown Windows version" << std::endl;
}
break;
case VER_PLATFORM_WIN32_WINDOWS:
if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 0)
{
std::cout << "Windows 95" << std::endl;
}
else if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 10)
{
std::cout << "Windows 98" << std::endl;
}
else if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 90)
{
std::cout << "Windows Me" << std::endl;
}
else
{
std::cout << "Unknown Windows version" << std::endl;
}
break;
default:
std::cout << "Unknown Windows platform" << std::endl;
break;
}
}
else
{
std::cout << "Error calling GetVersionEx function" << std::endl;
}
return 0;
}
```
该代码使用了Windows API中的GetVersionEx函数来获取操作系统的版本信息,并使用switch语句来判断操作系统类型及其版本。