void SystemInfo::DetectWindowsEdition() { if(m_bOsVersionInfoEx) { switch(m_osvi.dwMajorVersion) { case 4: { switch(m_osvi.wProductType) { case VER_NT_WORKSTATION: m_nWinEdition = Workstation; break; case VER_NT_SERVER: m_nWinEdition = (m_osvi.wSuiteMask & VER_SUITE_ENTERPRISE) != 0 ? EnterpriseServer : StandardServer; break; } } break; case 5: { switch (m_osvi.wProductType) { case VER_NT_WORKSTATION: { m_nWinEdition = (m_osvi.wSuiteMask & VER_SUITE_PERSONAL) != 0 ? Home : Professional; } break; case VER_NT_SERVER: { switch(m_osvi.dwMinorVersion) { case 0: { if ((m_osvi.wSuiteMask & VER_SUITE_DATACENTER) != 0) { m_nWinEdition = DatacenterServer; } else if ((m_osvi.wSuiteMask & VER_SUITE_ENTERPRISE) != 0) { m_nWinEdition = AdvancedServer; } else { m_nWinEdition = Server; } } break; default: { if ((m_osvi.wSuiteMask & VER_SUITE_DATACENTER) != 0) { m_nWinEdition = DatacenterServer; } else if ((m_osvi.wSuiteMask & VER_SUITE_ENTERPRISE) != 0) { m_nWinEdition = EnterpriseServer; } else if ((m_osvi.wSuiteMask & VER_SUITE_BLADE) != 0) { m_nWinEdition = WebServer; } else { m_nWinEdition = StandardServer; } } break; } } break; } } break; case 6: { DWORD dwReturnedProductType = DetectProductInfo(); switch (dwReturnedProductType) { case PRODUCT_UNDEFINED: m_nWinEdition = EditionUnknown; break; case PRODUCT_ULTIMATE: m_nWinEdition = Ultimate; break; case PRODUCT_HOME_BASIC: m_nWinEdition = HomeBasic; break; case PRODUCT_HOME_PREMIUM: m_nWinEdition = HomePremium; break; case PRODUCT_ENTERPRISE: m_nWinEdition = Enterprise; break; case PRODUCT_HOME_BASIC_N: m_nWinEdition = HomeBasic_N; break; case PRODUCT_BUSINESS: m_nWinEdition = Business; break; case PRODUCT_STANDARD_SERVER: m_nWinEdition = StandardServer; break; case PRODUCT_DATACENTER_SERVER: m_nWinEdition = DatacenterServer; break; case PRODUCT_SMALLBUSINESS_SERVER: m_nWinEdition = SmallBusinessServer; break; case PRODUCT_ENTERPRISE_SERVER: m_nWinEdition = EnterpriseServer; break; case PRODUCT_STARTER: m_nWinEdition = Starter; break; case PRODUCT_DATACENTER_SERVER_CORE: m_nWinEdition = DatacenterServerCore; break; case PRODUCT_STANDARD_SERVER_CORE: m_nWinEdition = StandardServerCore; break; case PRODUCT_ENTERPRISE_SERVER_CORE: m_nWinEdition = EnterpriseServerCore; break; case PRODUCT_ENTERPRISE_SERVER_IA64: m_nWinEdition = EnterpriseServerIA64; break; case PRODUCT_BUSINESS_N: m_nWinEdition = Business_N; break; case PRODUCT_WEB_SERVER: m_nWinEdition = WebServer; break; case PRODUCT_CLUSTER_SERVER: m_nWinEdition = ClusterServer; break; case PRODUCT_HOME_SERVER: m_nWinEdition = HomeServer; break; case PRODUCT_STORAGE_EXPRESS_SERVER: m_nWinEdition = StorageExpressServer; break; case PRODUCT_STORAGE_STANDARD_SERVER: m_nWinEdition = StorageStandardServer; break; case PRODUCT_STORAGE_WORKGROUP_SERVER: m_nWinEdition = StorageWorkgroupServer; break; case PRODUCT_STORAGE_ENTERPRISE_SERVER: m_nWinEdition = StorageEnterpriseServer; break; case PRODUCT_SERVER_FOR_SMALLBUSINESS: m_nWinEdition = ServerForSmallBusiness; break; case PRODUCT_SMALLBUSINESS_SERVER_PREMIUM: m_nWinEdition = SmallBusinessServerPremium; break; #if _WIN32_WINNT >= 0x0601 // windows 7 case PRODUCT_HOME_PREMIUM_N: m_nWinEdition = HomePremium_N; break; case PRODUCT_ENTERPRISE_N: m_nWinEdition = Enterprise_N; break; case PRODUCT_ULTIMATE_N: m_nWinEdition = Ultimate_N; break; case PRODUCT_WEB_SERVER_CORE: m_nWinEdition = WebServerCore; break; case PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT: m_nWinEdition = MediumBusinessServerManagement; break; case PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY: m_nWinEdition = MediumBusinessServerSecurity; break; case PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING: m_nWinEdition = MediumBusinessServerMessaging; break; case PRODUCT_SERVER_FOUNDATION: m_nWinEdition = ServerFoundation; break; case PRODUCT_HOME_PREMIUM_SERVER: m_nWinEdition = HomePremiumServer; break; case PRODUCT_SERVER_FOR_SMALLBUSINESS_V: m_nWinEdition = ServerForSmallBusiness_V; break; case PRODUCT_STANDARD_SERVER_V: m_nWinEdition = StandardServer_V; break; case PRODUCT_DATACENTER_SERVER_V: m_nWinEdition = DatacenterServer_V; break; case PRODUCT_ENTERPRISE_SERVER_V: m_nWinEdition = EnterpriseServer_V; break; case PRODUCT_DATACENTER_SERVER_CORE_V: m_nWinEdition = DatacenterServerCore_V; break; case PRODUCT_STANDARD_SERVER_CORE_V: m_nWinEdition = StandardServerCore_V; break; case PRODUCT_ENTERPRISE_SERVER_CORE_V: m_nWinEdition = EnterpriseServerCore_V; break; case PRODUCT_HYPERV: m_nWinEdition = HyperV; break; case PRODUCT_STORAGE_EXPRESS_SERVER_CORE: m_nWinEdition = StorageExpressServerCore; break; case PRODUCT_STORAGE_STANDARD_SERVER_CORE: m_nWinEdition = StorageStandardServerCore; break; case PRODUCT_STORAGE_WORKGROUP_SERVER_CORE: m_nWinEdition = StorageWorkgroupServerCore; break; case PRODUCT_STORAGE_ENTERPRISE_SERVER_CORE: m_nWinEdition = StorageEnterpriseServerCore; break; case PRODUCT_STARTER_N: m_nWinEdition = Starter_N; break; case PRODUCT_PROFESSIONAL: m_nWinEdition = Professional; break; case PRODUCT_PROFESSIONAL_N: m_nWinEdition = Professional_N; break; case PRODUCT_SB_SOLUTION_SERVER: m_nWinEdition = SBSolutionServer; break; case PRODUCT_SERVER_FOR_SB_SOLUTIONS: m_nWinEdition = ServerForSBSolution; break; case PRODUCT_STANDARD_SERVER_SOLUTIONS: m_nWinEdition = StandardServerSolutions; break; case PRODUCT_STANDARD_SERVER_SOLUTIONS_CORE: m_nWinEdition = StandardServerSolutionsCore; break; case PRODUCT_SB_SOLUTION_SERVER_EM: m_nWinEdition = SBSolutionServer_EM; break; case PRODUCT_SERVER_FOR_SB_SOLUTIONS_EM: m_nWinEdition = ServerForSBSolution_EM; break; case PRODUCT_SOLUTION_EMBEDDEDSERVER: m_nWinEdition = SolutionEmbeddedServer; break; case PRODUCT_SOLUTION_EMBEDDEDSERVER_CORE: m_nWinEdition = SolutionEmbeddedServerCore; break; case PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_CORE: m_nWinEdition = SmallBusinessServerPremiumCore; break; case PRODUCT_ESSENTIALBUSINESS_SERVER_MGMT: m_nWinEdition = EssentialBusinessServerMGMT; break; case PRODUCT_ESSENTIALBUSINESS_SERVER_ADDL: m_nWinEdition = EssentialBusinessServerADDL; break; case PRODUCT_ESSENTIALBUSINESS_SERVER_MGMTSVC: m_nWinEdition = EssentialBusinessServerMGMTSVC; break; case PRODUCT_ESSENTIALBUSINESS_SERVER_ADDLSVC: m_nWinEdition = EssentialBusinessServerADDLSVC; break; case PRODUCT_CLUSTER_SERVER_V: m_nWinEdition = ClusterServer_V; break; case PRODUCT_EMBEDDED: m_nWinEdition = Embedded; break; case PRODUCT_STARTER_E: m_nWinEdition = Starter_E; break; case PRODUCT_HOME_BASIC_E: m_nWinEdition = HomeBasic_E; break; case PRODUCT_HOME_PREMIUM_E: m_nWinEdition = HomePremium_E; break; case PRODUCT_PROFESSIONAL_E: m_nWinEdition = Professional_E; break; case PRODUCT_ENTERPRISE_E: m_nWinEdition = Enterprise_E; break; case PRODUCT_ULTIMATE_E: m_nWinEdition = Ultimate_E; break; #endif } } break; } } }
void CQuazaaSysInfo::DetectWindowsEdition() { if(m_bOsVersionInfoEx) { switch(m_osvi.dwMajorVersion) { case 4: { switch(m_osvi.wProductType) { case VER_NT_WORKSTATION: m_nWindowsEdition = WindowsEdition::Workstation; break; case VER_NT_SERVER: m_nWindowsEdition = (m_osvi.wSuiteMask & VER_SUITE_ENTERPRISE) != 0 ? WindowsEdition::EnterpriseServer : WindowsEdition::StandardServer; break; } } break; case 5: { switch (m_osvi.wProductType) { case VER_NT_WORKSTATION: { m_nWindowsEdition = (m_osvi.wSuiteMask & VER_SUITE_PERSONAL) != 0 ? WindowsEdition::Home : WindowsEdition::Professional; } break; case VER_NT_SERVER: { switch(m_osvi.dwMinorVersion) { case 0: { if ((m_osvi.wSuiteMask & VER_SUITE_DATACENTER) != 0) { m_nWindowsEdition = WindowsEdition::DatacenterServer; } else if ((m_osvi.wSuiteMask & VER_SUITE_ENTERPRISE) != 0) { m_nWindowsEdition = WindowsEdition::AdvancedServer; } else { m_nWindowsEdition = WindowsEdition::Server; } } break; default: { if ((m_osvi.wSuiteMask & VER_SUITE_DATACENTER) != 0) { m_nWindowsEdition = WindowsEdition::DatacenterServer; } else if ((m_osvi.wSuiteMask & VER_SUITE_ENTERPRISE) != 0) { m_nWindowsEdition = WindowsEdition::EnterpriseServer; } else if ((m_osvi.wSuiteMask & VER_SUITE_BLADE) != 0) { m_nWindowsEdition = WindowsEdition::WebServer; } else { m_nWindowsEdition = WindowsEdition::StandardServer; } } break; } } break; } } break; case 6: { DWORD dwReturnedProductType = DetectProductInfo(); switch (dwReturnedProductType) { case PRODUCT_UNDEFINED: m_nWindowsEdition = WindowsEdition::EditionUnknown; break; case PRODUCT_ULTIMATE: m_nWindowsEdition = WindowsEdition::Ultimate; break; case PRODUCT_HOME_BASIC: m_nWindowsEdition = WindowsEdition::HomeBasic; break; case PRODUCT_HOME_PREMIUM: m_nWindowsEdition = WindowsEdition::HomePremium; break; case PRODUCT_ENTERPRISE: m_nWindowsEdition = WindowsEdition::Enterprise; break; case PRODUCT_HOME_BASIC_N: m_nWindowsEdition = WindowsEdition::HomeBasicN; break; case PRODUCT_BUSINESS: m_nWindowsEdition = WindowsEdition::Business; break; case PRODUCT_STANDARD_SERVER: m_nWindowsEdition = WindowsEdition::StandardServer; break; case PRODUCT_DATACENTER_SERVER: m_nWindowsEdition = WindowsEdition::DatacenterServer; break; case PRODUCT_SMALLBUSINESS_SERVER: m_nWindowsEdition = WindowsEdition::SmallBusinessServer; break; case PRODUCT_ENTERPRISE_SERVER: m_nWindowsEdition = WindowsEdition::EnterpriseServer; break; case PRODUCT_STARTER: m_nWindowsEdition = WindowsEdition::Starter; break; case PRODUCT_DATACENTER_SERVER_CORE: m_nWindowsEdition = WindowsEdition::DatacenterServerCore; break; case PRODUCT_STANDARD_SERVER_CORE: m_nWindowsEdition = WindowsEdition::StandardServerCore; break; case PRODUCT_ENTERPRISE_SERVER_CORE: m_nWindowsEdition = WindowsEdition::EnterpriseServerCore; break; case PRODUCT_ENTERPRISE_SERVER_IA64: m_nWindowsEdition = WindowsEdition::EnterpriseServerIA64; break; case PRODUCT_BUSINESS_N: m_nWindowsEdition = WindowsEdition::BusinessN; break; case PRODUCT_WEB_SERVER: m_nWindowsEdition = WindowsEdition::WebServer; break; case PRODUCT_CLUSTER_SERVER: m_nWindowsEdition = WindowsEdition::ClusterServer; break; case PRODUCT_HOME_SERVER: m_nWindowsEdition = WindowsEdition::HomeServer; break; case PRODUCT_STORAGE_EXPRESS_SERVER: m_nWindowsEdition = WindowsEdition::StorageExpressServer; break; case PRODUCT_STORAGE_STANDARD_SERVER: m_nWindowsEdition = WindowsEdition::StorageStandardServer; break; case PRODUCT_STORAGE_WORKGROUP_SERVER: m_nWindowsEdition = WindowsEdition::StorageWorkgroupServer; break; case PRODUCT_STORAGE_ENTERPRISE_SERVER: m_nWindowsEdition = WindowsEdition::StorageEnterpriseServer; break; case PRODUCT_SERVER_FOR_SMALLBUSINESS: m_nWindowsEdition = WindowsEdition::ServerForSmallBusiness; break; case PRODUCT_SMALLBUSINESS_SERVER_PREMIUM: m_nWindowsEdition = WindowsEdition::SmallBusinessServerPremium; break; case PRODUCT_HOME_PREMIUM_N: m_nWindowsEdition = WindowsEdition::HomePremiumN; break; case PRODUCT_ENTERPRISE_N: m_nWindowsEdition = WindowsEdition::EnterpriseN; break; case PRODUCT_ULTIMATE_N: m_nWindowsEdition = WindowsEdition::UltimateN; break; case PRODUCT_WEB_SERVER_CORE: m_nWindowsEdition = WindowsEdition::WebServerCore; break; case PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT: m_nWindowsEdition = WindowsEdition::MediumBusinessServerManagement; break; case PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY: m_nWindowsEdition = WindowsEdition::MediumBusinessServerSecurity; break; case PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING: m_nWindowsEdition = WindowsEdition::MediumBusinessServerMessaging; break; case PRODUCT_SERVER_FOUNDATION: m_nWindowsEdition = WindowsEdition::ServerFoundation; break; case PRODUCT_HOME_PREMIUM_SERVER: m_nWindowsEdition = WindowsEdition::HomePremiumServer; break; case PRODUCT_SERVER_FOR_SMALLBUSINESS_V: m_nWindowsEdition = WindowsEdition::ServerForSmallBusinessV; break; case PRODUCT_STANDARD_SERVER_V: m_nWindowsEdition = WindowsEdition::StandardServerV; break; case PRODUCT_DATACENTER_SERVER_V: m_nWindowsEdition = WindowsEdition::DatacenterServerV; break; case PRODUCT_ENTERPRISE_SERVER_V: m_nWindowsEdition = WindowsEdition::EnterpriseServerV; break; case PRODUCT_DATACENTER_SERVER_CORE_V: m_nWindowsEdition = WindowsEdition::DatacenterServerCoreV; break; case PRODUCT_STANDARD_SERVER_CORE_V: m_nWindowsEdition = WindowsEdition::StandardServerCoreV; break; case PRODUCT_ENTERPRISE_SERVER_CORE_V: m_nWindowsEdition = WindowsEdition::EnterpriseServerCoreV; break; case PRODUCT_HYPERV: m_nWindowsEdition = WindowsEdition::HyperV; break; case PRODUCT_STORAGE_EXPRESS_SERVER_CORE: m_nWindowsEdition = WindowsEdition::StorageExpressServerCore; break; case PRODUCT_STORAGE_STANDARD_SERVER_CORE: m_nWindowsEdition = WindowsEdition::StorageStandardServerCore; break; case PRODUCT_STORAGE_WORKGROUP_SERVER_CORE: m_nWindowsEdition = WindowsEdition::StorageWorkgroupServerCore; break; case PRODUCT_STORAGE_ENTERPRISE_SERVER_CORE: m_nWindowsEdition = WindowsEdition::StorageEnterpriseServerCore; break; case PRODUCT_STARTER_N: m_nWindowsEdition = WindowsEdition::StarterN; break; case PRODUCT_PROFESSIONAL: m_nWindowsEdition = WindowsEdition::Professional; break; case PRODUCT_PROFESSIONAL_N: m_nWindowsEdition = WindowsEdition::ProfessionalN; break; case PRODUCT_SB_SOLUTION_SERVER: m_nWindowsEdition = WindowsEdition::SBSolutionServer; break; case PRODUCT_SERVER_FOR_SB_SOLUTIONS: m_nWindowsEdition = WindowsEdition::ServerForSBSolutions; break; case PRODUCT_STANDARD_SERVER_SOLUTIONS: m_nWindowsEdition = WindowsEdition::StandardServerSolutions; break; case PRODUCT_STANDARD_SERVER_SOLUTIONS_CORE: m_nWindowsEdition = WindowsEdition::StandardServerSolutionsCore; break; case PRODUCT_SB_SOLUTION_SERVER_EM: m_nWindowsEdition = WindowsEdition::SBSolutionServerEM; break; case PRODUCT_SERVER_FOR_SB_SOLUTIONS_EM: m_nWindowsEdition = WindowsEdition::ServerForSBSolutionsEM; break; case PRODUCT_SOLUTION_EMBEDDEDSERVER: m_nWindowsEdition = WindowsEdition::SolutionEmbeddedServer; break; case PRODUCT_SOLUTION_EMBEDDEDSERVER_CORE: m_nWindowsEdition = WindowsEdition::SolutionEmbeddedServerCore; break; case PRODUCT_ESSENTIALBUSINESS_SERVER_MGMT: m_nWindowsEdition = WindowsEdition::EssentialBusinessServerMGMT; break; case PRODUCT_ESSENTIALBUSINESS_SERVER_ADDL: m_nWindowsEdition = WindowsEdition::EssentialBusinessServerADDL; break; case PRODUCT_ESSENTIALBUSINESS_SERVER_MGMTSVC: m_nWindowsEdition = WindowsEdition::EssentialBusinessServerMGMTSVC; break; case PRODUCT_ESSENTIALBUSINESS_SERVER_ADDLSVC: m_nWindowsEdition = WindowsEdition::EssentialBusinessServerADDLSVC; break; case PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_CORE: m_nWindowsEdition = WindowsEdition::SmallBusinessServerPremiumCore; break; case PRODUCT_CLUSTER_SERVER_V: m_nWindowsEdition = WindowsEdition::ClusterServerV; break; case PRODUCT_EMBEDDED: m_nWindowsEdition = WindowsEdition::Embedded; break; case PRODUCT_STARTER_E: m_nWindowsEdition = WindowsEdition::StarterE; break; case PRODUCT_HOME_BASIC_E: m_nWindowsEdition = WindowsEdition::HomeBasicE; break; case PRODUCT_HOME_PREMIUM_E: m_nWindowsEdition = WindowsEdition::HomePremiumE; break; case PRODUCT_PROFESSIONAL_E: m_nWindowsEdition = WindowsEdition::ProfessionalE; break; case PRODUCT_ENTERPRISE_E: m_nWindowsEdition = WindowsEdition::EnterpriseE; break; case PRODUCT_ULTIMATE_E: m_nWindowsEdition = WindowsEdition::UltimateE; break; case PRODUCT_ENTERPRISE_EVALUATION: m_nWindowsEdition = WindowsEdition::EnterpriseEvaluation; break; case PRODUCT_MULTIPOINT_STANDARD_SERVER: m_nWindowsEdition = WindowsEdition::MultipointStandardServer; break; case PRODUCT_MULTIPOINT_PREMIUM_SERVER: m_nWindowsEdition = WindowsEdition::MultipointPremiumServer; break; case PRODUCT_STANDARD_EVALUATION_SERVER: m_nWindowsEdition = WindowsEdition::StandardEvaluationServer; break; case PRODUCT_DATACENTER_EVALUATION_SERVER: m_nWindowsEdition = WindowsEdition::DatacenterEvaluationServer; break; case PRODUCT_ENTERPRISE_N_EVALUATION: m_nWindowsEdition = WindowsEdition::EnterpriseNEvaluation; break; case PRODUCT_STORAGE_WORKGROUP_EVALUATION_SERVER: m_nWindowsEdition = WindowsEdition::StorageWorkgroupEvaluationServer; break; case PRODUCT_STORAGE_STANDARD_EVALUATION_SERVER: m_nWindowsEdition = WindowsEdition::StorageStandardEvaluationServer; break; case PRODUCT_CORE_N: m_nWindowsEdition = WindowsEdition::CoreN; break; case PRODUCT_CORE_COUNTRYSPECIFIC: m_nWindowsEdition = WindowsEdition::CoreCountrySpecific; break; case PRODUCT_CORE_SINGLELANGUAGE: m_nWindowsEdition = WindowsEdition::CoreSingleLanguage; break; case PRODUCT_CORE: m_nWindowsEdition = WindowsEdition::Core; break; case PRODUCT_PROFESSIONAL_WMC: m_nWindowsEdition = WindowsEdition::ProfessionalWindowsMediaCenter; break; } } break; } } }