Exemple #1
0
BOOL CSysInfo::getOS( CString &csName, CString &csVersion, CString &csComment, CString &csDescription, CString &csInstallDate)
{
	if (m_wmiInfo.GetOS( csName, csVersion, csComment, csDescription, csInstallDate))
		// WMI successful
		return TRUE;

	AddLog( _T( "dtWinVer GetOS...\n"));

	COSVersion::OS_VERSION_INFO osvi;
	COSVersion					os;
	BOOL						bIsServer = FALSE;

	memset(&osvi, 0, sizeof(osvi));
	if (os.GetVersion(&osvi))
	{
		// Get OS name and comments
		switch (osvi.UnderlyingPlatform)
		{
			case COSVersion::Dos:               
			{
				csName = _T("DOS");
				csComment.Empty();
				break;
			}
			case COSVersion::Windows3x:         
			{
				csName = _T("Microsoft Windows 3.X");
				csComment.Empty();
				break;
			}
			case COSVersion::WindowsCE:            
			{
				csName = _T("Microsoft Windows CE");
				csComment.Empty();
				break;
			}
			case COSVersion::Windows9x:           
			{
				if (os.IsWindows95(&osvi))
				{
					csName = _T( "Microsoft Windows 95");
					csComment.Empty();
				}
				else if (os.IsWindows95SP1(&osvi))
				{
					csName = _T( "Microsoft Windows 95");
					csComment = _T( "Service Pack 1");
				}
				else if (os.IsWindows95B(&osvi))
				{
					csName = _T( "Microsoft Windows 95");
					csComment = _T( "Operating System Release 2.0/2.1 (B)");
				}
				else if (os.IsWindows95C(&osvi))
				{
					csName = _T( "Microsoft Windows 95");
					csComment = _T( "Operating System Release 2.5 (C)");
				}
				else if (os.IsWindows98(&osvi))
				{
					csName = _T( "Microsoft Windows 98");
					csComment.Empty();
				}
				else if (os.IsWindows98SP1(&osvi))
				{
					csName = _T( "Microsoft Windows 98");
					csComment = _T( "Service Pack 1");
				}
				else if (os.IsWindows98SE(&osvi))
				{
					csName = _T( "Microsoft Windows 98");
					csComment = _T( "Second Edition");
				}
				else if (os.IsWindowsME(&osvi))
				{
					csName = _T( "Microsoft Windows Millennium");
					csComment.Empty();
				}
				else
				{
					csName = _T( "Unknown OS");
					csComment.Empty();
				}
				break;
			}
			case COSVersion::WindowsNT:    
			{
				if (os.IsNTPreWin2k(&osvi))
				{
					csName.Format( _T( "Microsoft Windows NT %d.%d"),
									osvi.dwUnderlyingMajorVersion,
									osvi.dwUnderlyingMinorVersion);

					if (os.IsNTWorkstation(&osvi))
						csName += _T(" Workstation");
					else if (os.IsNTDatacenterServer(&osvi))
						csName += _T(" Datacenter");
					else if (os.IsNTEnterpriseServer(&osvi))
						csName += _T(" Enterprise");
					else 
						csName += _T(" Server");
					csComment = osvi.szUnderlyingCSDVersion;
				}
				else if (os.IsWindows2000(&osvi))
				{
					csName = _T("Microsoft Windows 2000");

					if (os.IsWindows2000Professional(&osvi))
						csName += _T(" Professional");
					else if (os.IsWindows2000DatacenterServer(&osvi))
						csName += _T(" Datacenter");
					else if (os.IsWindows2000AdvancedServer(&osvi))
						csName += _T(" Advanced Server");
					else 
						csName += _T(" Server");
					csComment = osvi.szUnderlyingCSDVersion;
				}
				else if (os.IsWindowsXP(&osvi))
				{
					csName = _T("Microsoft Windows XP");

					if (os.IsWindowsXPPersonal(&osvi))
						csName += _T(" Home Edition");                  
					else if (os.IsWindowsXPProfessional(&osvi))
						csName += _T(" Professional");                  
					csComment = osvi.szUnderlyingCSDVersion;
				}
				else if (os.IsWindowsServer2003(&osvi))
				{
					csName = _T("Microsoft Windows Server 2003");

					if (os.IsDatacenterWindowsServer2003(&osvi))
						csName += _T(" Datacenter Edition");
					else if (os.IsEnterpriseWindowsServer2003(&osvi))
						csName += _T(" Enterprise Edition");
					else if (os.IsWebWindowsServer2003(&osvi))
						csName += _T(" Web Edition");
					else if (os.IsStandardWindowsServer2003(&osvi))
						csName += _T(" Standard Edition");
					csComment = osvi.szUnderlyingCSDVersion;
				}
				else if (os.IsWindowsServer2003R2(&osvi))
				{
					csName = _T("Microsoft Windows Server 2003 R2");

					if (os.IsDatacenterWindowsServer2003R2(&osvi))
						csName += _T(" Datacenter Edition");
					else if (os.IsEnterpriseWindowsServer2003R2(&osvi))
						csName += _T(" Enterprise Edition");
					else if (os.IsWebWindowsServer2003R2(&osvi))
						csName += _T(" Web Edition");
					else if (os.IsStandardWindowsServer2003R2(&osvi))
						csName += _T(" Standard Edition");
					csComment = osvi.szUnderlyingCSDVersion;
				}
				else if (os.IsWindowsVista(&osvi))
				{
					csName = _T("Microsoft Windows Vista");

					if (os.IsHomeBasicInstalled(&osvi))
						csName += _T(" Home Basic Edition");                  
					else if (os.IsHomeBasicPremium(&osvi))
						csName += _T(" Home Premium Edition");                  
					else if (os.IsBusinessInstalled(&osvi))
						csName += _T(" Business Edition");                  
					else if (os.IsProfessionalInstalled(&osvi))
						csName += _T(" Professional Edition");                  
					else if (os.IsEnterpriseInstalled(&osvi))
						csName += _T(" Enterprise Edition");                  
					else if (os.IsUltimateInstalled(&osvi))
						csName += _T(" Ultimate Edition");                  
					csComment = osvi.szUnderlyingCSDVersion;
				}
				else if (os.IsWindowsServer2008(&osvi))
				{
					csName = _T("Microsoft Windows Server 2008");

					if (os.IsDatacenterWindowsServer2008(&osvi))
						csName += _T(" Datacenter Edition");
					else if (os.IsEnterpriseWindowsServer2008(&osvi))
						csName += _T(" Enterprise Edition");
					else if (os.IsWebWindowsServer2008(&osvi))
						csName += _T(" Web Edition");
					else if (os.IsStandardWindowsServer2008(&osvi))
						csName += _T(" Standard Edition");
				}
				else if (os.IsWindows7(&osvi))
				{
					csName = _T("Microsoft Windows 7");

					if (os.IsHomeBasicInstalled(&osvi))
						csName += _T(" Home Basic Edition");                  
					else if (os.IsHomeBasicPremium(&osvi))
						csName += _T(" Home Premium Edition");                  
					else if (os.IsBusinessInstalled(&osvi))
						csName += _T(" Business Edition");                  
					else if (os.IsProfessionalInstalled(&osvi))
						csName += _T(" Professional Edition");                  
					else if (os.IsEnterpriseInstalled(&osvi))
						csName += _T(" Enterprise Edition");                  
					else if (os.IsUltimateInstalled(&osvi))
						csName += _T(" Ultimate Edition");                  
					csComment = osvi.szUnderlyingCSDVersion;
				}
				else if (os.IsWindowsServer2008R2(&osvi))
				{
					csName = _T("Microsoft Windows Server 2008 R2");

					if (os.IsDatacenterWindowsServer2008R2(&osvi))
						csName += _T(" Datacenter Edition");
					else if (os.IsEnterpriseWindowsServer2008R2(&osvi))
						csName += _T(" Enterprise Edition");
					else if (os.IsWebWindowsServer2008R2(&osvi))
						csName += _T(" Web Edition");
					else if (os.IsStandardWindowsServer2008R2(&osvi))
						csName += _T(" Standard Edition");
				}
				else if (os.IsWindows8(&osvi))
				{
					csName = _T("Microsoft Windows 8");

					if (os.IsHomeBasicInstalled(&osvi))
						csName += _T(" Home Basic Edition");                  
					else if (os.IsHomeBasicPremium(&osvi))
						csName += _T(" Home Premium Edition");                  
					else if (os.IsBusinessInstalled(&osvi))
						csName += _T(" Business Edition");                  
					else if (os.IsProfessionalInstalled(&osvi))
						csName += _T(" Professional Edition");                  
					else if (os.IsEnterpriseInstalled(&osvi))
						csName += _T(" Enterprise Edition");                  
					else if (os.IsUltimateInstalled(&osvi))
						csName += _T(" Ultimate Edition");                  
					csComment = osvi.szUnderlyingCSDVersion;
				}
				else if (os.IsWindowsServer2012(&osvi))
				{
					csName = _T("Microsoft Windows Server 2012");

					if (os.IsDatacenterWindowsServer2012(&osvi))
						csName += _T(" Datacenter Edition");
					else if (os.IsEnterpriseWindowsServer2012(&osvi))
						csName += _T(" Enterprise Edition");
					else if (os.IsWebWindowsServer2012(&osvi))
						csName += _T(" Web Edition");
					else if (os.IsStandardWindowsServer2012(&osvi))
						csName += _T(" Standard Edition");
				}
				else if (os.IsWindows8Point1(&osvi))
				{
					csName = _T("Microsoft Windows Blue");

					if (os.IsHomeBasicInstalled(&osvi))
						csName += _T(" Home Basic Edition");                  
					else if (os.IsHomeBasicPremium(&osvi))
						csName += _T(" Home Premium Edition");                  
					else if (os.IsBusinessInstalled(&osvi))
						csName += _T(" Business Edition");                  
					else if (os.IsProfessionalInstalled(&osvi))
						csName += _T(" Professional Edition");                  
					else if (os.IsEnterpriseInstalled(&osvi))
						csName += _T(" Enterprise Edition");                  
					else if (os.IsUltimateInstalled(&osvi))
						csName += _T(" Ultimate Edition");                  
					csComment = osvi.szUnderlyingCSDVersion;
				}
				else if (os.IsWebWindowsServerBlue(&osvi))
				{
					csName = _T("Microsoft Windows Server Blue");

					if (os.IsDatacenterWindowsServer2012(&osvi))
						csName += _T(" Datacenter Edition");
					else if (os.IsEnterpriseWindowsServer2012(&osvi))
						csName += _T(" Enterprise Edition");
					else if (os.IsWebWindowsServer2012(&osvi))
						csName += _T(" Web Edition");
					else if (os.IsStandardWindowsServer2012(&osvi))
						csName += _T(" Standard Edition");
				}
/*				if (os.IsEmulated64Bit(&osvi))
					csComment += _T(" (64 Bits)");
*/				break;
			}
			default:                         
			{
				csName = _T("Unknown OS");
				csComment.Empty();
				break;
			}
		}
		// Format version and build number
		csVersion.Format( _T("%d.%d.%d"), osvi.dwUnderlyingMajorVersion,
											 osvi.dwUnderlyingMinorVersion,
											 osvi.dwUnderlyingBuildNumber);
	}
	else
	{
		AddLog( _T( "\tFailed in call to GetVersion !\n"));
		csName = _T( "Unbknown OS");
		csVersion = NOT_AVAILABLE;
		csComment.Empty();
		return FALSE;
	}
	AddLog( _T( "\t\t<OS %s %s %s>\n\tOK\n"), csName, csVersion, csComment);
	m_registryInfo.GetDeviceDescription( csDescription);
	return TRUE;
}