I'm trying to detect a user's OS but I'm not getting the correct results. Is there something I'm missing?

Code:
OSVERSIONINFO osInfo;

	// Get Windows version. 
	ZeroMemory(&osInfo, sizeof(osInfo));
	GetVersionEx(&osInfo);

	if(osInfo.dwPlatformId == 1) 
	{
		if((osInfo.dwMajorVersion == 4) && (osInfo.dwMinorVersion == 0))
			objSystemInfo.OperatingSystem.Windows95 = true;
		else if((osInfo.dwMajorVersion == 4) && (osInfo.dwMinorVersion == 10))
			objSystemInfo.OperatingSystem.Windows98 = true;
		else if((osInfo.dwMajorVersion == 4) && (osInfo.dwMinorVersion == 90))
			objSystemInfo.OperatingSystem.WindowsME = true; 
	}

	// Win NT
	else if(osInfo.dwPlatformId == 2)
	{
		if((osInfo.dwMajorVersion == 4) && (osInfo.dwMinorVersion == 0))
			objSystemInfo.OperatingSystem.WindowsNT4 = true;
		else if((osInfo.dwMajorVersion == 5) && (osInfo.dwMinorVersion == 0))
			objSystemInfo.OperatingSystem.Windows2000 = true;
		else if((osInfo.dwMajorVersion == 5) && (osInfo.dwMinorVersion == 1))
			objSystemInfo.OperatingSystem.WindowsXP = true;
		else if((osInfo.dwMajorVersion == 5) && (osInfo.dwMinorVersion == 2))
		{
			if(GetSystemMetrics(89))	 
				objSystemInfo.OperatingSystem.WindowsServer2003R2 = true;
		}
		else if((osInfo.dwMajorVersion == 6) && (osInfo.dwMinorVersion == 0))
			objSystemInfo.OperatingSystem.WindowsVista = true; 
		else if((osInfo.dwMajorVersion == 6) && (osInfo.dwMinorVersion == 1))
			objSystemInfo.OperatingSystem.Windows7 = true; 
	}