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; }