大家帮我看一下这段代码,看看问题出在哪里
这段代码是取得操作系统的版本号,奇怪的是,明明是XP的,应该返回9,但返回的却是12,是Windows 7!Windows 2000的,返回的应该是8,但这段代码返回的却是10,变成Vista了!如果将Windows 7的2行代码去掉,XP取回的值就正常了,是9;如果将case 6下的代码去掉,Windows 2000的返回值也正常了,是8。究竟问题出在哪里呢?
int __fastcall TForm1::GetSysVer(void)
{
int iOSV = 0; //用数字表示最终得到的版本号
OSVERSIONINFO osv; //声明版本结构
osv.dwOSVersionInfoSize = sizeof(osv);
GetVersionEx(&osv);
switch(osv.dwPlatformId)
{
case VER_PLATFORM_WIN32s:
iOSV = 1; //Windows 3.1
break;
case VER_PLATFORM_WIN32_WINDOWS:
switch(osv.dwMinorVersion)
{
case 0:
iOSV = 2; //Windows 95 或 Windows 97 (其实就是Windows95的升级版本)
break;
case 10:
if(osv.szCSDVersion[1] == 'A')
iOSV = 3; //Windows 98 SE
else
iOSV = 4; //Windows 98
break;
case 90:
iOSV = 5; //Windows ME
}
break;
case VER_PLATFORM_WIN32_NT:
switch(osv.dwMajorVersion)
{
case 3:
iOSV = 6; //Windows NT 3.51
break;
case 4:
iOSV = 7; //Windows NT 4.0
break;
case 5:
switch(osv.dwMinorVersion)
{
case 0: //Windows 2000
iOSV = 8;
break;
case 1: //Windows XP
iOSV = 9;
}
case 6:
switch(osv.dwMinorVersion)
{
case 0:
if(osv.szCSDVersion[1] == 'S')
iOSV = 11; //Windows Vista SP1以上
else
iOSV = 10; //Windows Vista
break;
case 1:
iOSV = 12; //Windows 7
}
}
}
return iOSV;
}