private String GetEditionWindows() { String edition = String.Empty; OperatingSystem osVersion = Environment.OSVersion; NativeMethods.OS_VERSION_INFO_EX osVersionInfo = new NativeMethods.OS_VERSION_INFO_EX(); osVersionInfo.OsVersionInfoSize = Marshal.SizeOf(typeof(NativeMethods.OS_VERSION_INFO_EX)); if (NativeMethods.GetVersionEx(ref osVersionInfo)) { int majorVersion = osVersion.Version.Major; int minorVersion = osVersion.Version.Minor; Byte productType = osVersionInfo.ProductTyp; short suiteMask = osVersionInfo.SuiteMask; if (majorVersion == 4) { if (productType == VER_NT_WORKSTATION) { // Windows NT 4.0 Workstation edition = "Workstation"; } else if (productType == VER_NT_SERVER) { if ((suiteMask & VER_SUITE_ENTERPRISE) != 0) { // Windows NT 4.0 Server Enterprise edition = "Enterprise Server"; } else { // Windows NT 4.0 Server edition = "Standard Server"; } } } else if (majorVersion == 5) { if (productType == VER_NT_WORKSTATION) { if ((suiteMask & VER_SUITE_PERSONAL) != 0) { edition = "Home"; } else { // 86 == SM_TABLETPC if (NativeMethods.GetSystemMetrics(86) == 0) { edition = "Professional"; } else { edition = "Tablet Edition"; } } } else if (productType == VER_NT_SERVER) { if (minorVersion == 0) { if ((suiteMask & VER_SUITE_DATACENTER) != 0) { // Windows 2000 Datacenter Server edition = "Datacenter Server"; } else if ((suiteMask & VER_SUITE_ENTERPRISE) != 0) { // Windows 2000 Advanced Server edition = "Advanced Server"; } else { // Windows 2000 Server edition = "Server"; } } else { if ((suiteMask & VER_SUITE_DATACENTER) != 0) { // Windows Server 2003 Datacenter Edition edition = "Datacenter"; } else if ((suiteMask & VER_SUITE_ENTERPRISE) != 0) { // Windows Server 2003 Enterprise Edition edition = "Enterprise"; } else if ((suiteMask & VER_SUITE_BLADE) != 0) { // Windows Server 2003 Web Edition edition = "Web Edition"; } else { // Windows Server 2003 Standard Edition edition = "Standard"; } } } } else if (majorVersion == 6) { int ed; if (NativeMethods.GetProductInfo(majorVersion, minorVersion, osVersionInfo.ServicePackMajor, osVersionInfo.ServicePackMinor, out ed)) { switch (ed) { case PRODUCT_BUSINESS: edition = "Business"; break; case PRODUCT_BUSINESS_N: edition = "Business N"; break; case PRODUCT_CLUSTER_SERVER: edition = "HPC Edition"; break; case PRODUCT_CLUSTER_SERVER_V: edition = "HPC Edition without Hyper-V"; break; case PRODUCT_DATACENTER_SERVER: edition = "Datacenter Server"; break; case PRODUCT_DATACENTER_SERVER_CORE: edition = "Datacenter Server (core installation)"; break; case PRODUCT_DATACENTER_SERVER_V: edition = "Datacenter Server without Hyper-V"; break; case PRODUCT_DATACENTER_SERVER_CORE_V: edition = "Datacenter Server without Hyper-V (core installation)"; break; case PRODUCT_EMBEDDED: edition = "Embedded"; break; case PRODUCT_ENTERPRISE: edition = "Enterprise"; break; case PRODUCT_ENTERPRISE_N: edition = "Enterprise N"; break; case PRODUCT_ENTERPRISE_E: edition = "Enterprise E"; break; case PRODUCT_ENTERPRISE_SERVER: edition = "Enterprise Server"; break; case PRODUCT_ENTERPRISE_SERVER_CORE: edition = "Enterprise Server (core installation)"; break; case PRODUCT_ENTERPRISE_SERVER_CORE_V: edition = "Enterprise Server without Hyper-V (core installation)"; break; case PRODUCT_ENTERPRISE_SERVER_IA64: edition = "Enterprise Server for Itanium-based Systems"; break; case PRODUCT_ENTERPRISE_SERVER_V: edition = "Enterprise Server without Hyper-V"; break; case PRODUCT_ESSENTIALBUSINESS_SERVER_MGMT: edition = "Essential Business Server MGMT"; break; case PRODUCT_ESSENTIALBUSINESS_SERVER_ADDL: edition = "Essential Business Server ADDL"; break; case PRODUCT_ESSENTIALBUSINESS_SERVER_MGMTSVC: edition = "Essential Business Server MGMTSVC"; break; case PRODUCT_ESSENTIALBUSINESS_SERVER_ADDLSVC: edition = "Essential Business Server ADDLSVC"; break; case PRODUCT_HOME_BASIC: edition = "Home Basic"; break; case PRODUCT_HOME_BASIC_N: edition = "Home Basic N"; break; case PRODUCT_HOME_BASIC_E: edition = "Home Basic E"; break; case PRODUCT_HOME_PREMIUM: edition = "Home Premium"; break; case PRODUCT_HOME_PREMIUM_N: edition = "Home Premium N"; break; case PRODUCT_HOME_PREMIUM_E: edition = "Home Premium E"; break; case PRODUCT_HOME_PREMIUM_SERVER: edition = "Home Premium Server"; break; case PRODUCT_HYPERV: edition = "Microsoft Hyper-V Server"; break; case PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT: edition = "Windows Essential Business Management Server"; break; case PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING: edition = "Windows Essential Business Messaging Server"; break; case PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY: edition = "Windows Essential Business Security Server"; break; case PRODUCT_PROFESSIONAL: edition = "Professional"; break; case PRODUCT_PROFESSIONAL_N: edition = "Professional N"; break; case PRODUCT_PROFESSIONAL_E: edition = "Professional E"; break; case PRODUCT_SB_SOLUTION_SERVER: edition = "SB Solution Server"; break; case PRODUCT_SB_SOLUTION_SERVER_EM: edition = "SB Solution Server EM"; break; case PRODUCT_SERVER_FOR_SB_SOLUTIONS: edition = "Server for SB Solutions"; break; case PRODUCT_SERVER_FOR_SB_SOLUTIONS_EM: edition = "Server for SB Solutions EM"; break; case PRODUCT_SERVER_FOR_SMALLBUSINESS: edition = "Windows Essential Server Solutions"; break; case PRODUCT_SERVER_FOR_SMALLBUSINESS_V: edition = "Windows Essential Server Solutions without Hyper-V"; break; case PRODUCT_SERVER_FOUNDATION: edition = "Server Foundation"; break; case PRODUCT_SMALLBUSINESS_SERVER: edition = "Windows Small Business Server"; break; case PRODUCT_SMALLBUSINESS_SERVER_PREMIUM: edition = "Windows Small Business Server Premium"; break; case PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_CORE: edition = "Windows Small Business Server Premium (core installation)"; break; case PRODUCT_SOLUTION_EMBEDDEDSERVER: edition = "Solution Embedded Server"; break; case PRODUCT_SOLUTION_EMBEDDEDSERVER_CORE: edition = "Solution Embedded Server (core installation)"; break; case PRODUCT_STANDARD_SERVER: edition = "Standard Server"; break; case PRODUCT_STANDARD_SERVER_CORE: edition = "Standard Server (core installation)"; break; case PRODUCT_STANDARD_SERVER_SOLUTIONS: edition = "Standard Server Solutions"; break; case PRODUCT_STANDARD_SERVER_SOLUTIONS_CORE: edition = "Standard Server Solutions (core installation)"; break; case PRODUCT_STANDARD_SERVER_CORE_V: edition = "Standard Server without Hyper-V (core installation)"; break; case PRODUCT_STANDARD_SERVER_V: edition = "Standard Server without Hyper-V"; break; case PRODUCT_STARTER: edition = "Starter"; break; case PRODUCT_STARTER_N: edition = "Starter N"; break; case PRODUCT_STARTER_E: edition = "Starter E"; break; case PRODUCT_STORAGE_ENTERPRISE_SERVER: edition = "Enterprise Storage Server"; break; case PRODUCT_STORAGE_ENTERPRISE_SERVER_CORE: edition = "Enterprise Storage Server (core installation)"; break; case PRODUCT_STORAGE_EXPRESS_SERVER: edition = "Express Storage Server"; break; case PRODUCT_STORAGE_EXPRESS_SERVER_CORE: edition = "Express Storage Server (core installation)"; break; case PRODUCT_STORAGE_STANDARD_SERVER: edition = "Standard Storage Server"; break; case PRODUCT_STORAGE_STANDARD_SERVER_CORE: edition = "Standard Storage Server (core installation)"; break; case PRODUCT_STORAGE_WORKGROUP_SERVER: edition = "Workgroup Storage Server"; break; case PRODUCT_STORAGE_WORKGROUP_SERVER_CORE: edition = "Workgroup Storage Server (core installation)"; break; case PRODUCT_UNDEFINED: edition = "Unknown product"; break; case PRODUCT_ULTIMATE: edition = "Ultimate"; break; case PRODUCT_ULTIMATE_N: edition = "Ultimate N"; break; case PRODUCT_ULTIMATE_E: edition = "Ultimate E"; break; case PRODUCT_WEB_SERVER: edition = "Web Server"; break; case PRODUCT_WEB_SERVER_CORE: edition = "Web Server (core installation)"; break; } // end switch (ed) } // end if (GetProductInfo()) } // end else (else if (majorVersion == 6)) } // end if (GetVersionEx(ref osVersionInfo)) return(edition); }
private String GetNameWindows() { String name = "unknown"; OperatingSystem osVersion = Environment.OSVersion; NativeMethods.OS_VERSION_INFO_EX osVersionInfo = new NativeMethods.OS_VERSION_INFO_EX(); osVersionInfo.OsVersionInfoSize = Marshal.SizeOf(typeof(NativeMethods.OS_VERSION_INFO_EX)); if (NativeMethods.GetVersionEx(ref osVersionInfo)) { int majorVersion = osVersion.Version.Major; int minorVersion = osVersion.Version.Minor; switch (osVersion.Platform) { case PlatformID.Win32S: name = "Windows 3.1"; break; case PlatformID.WinCE: name = "Windows CE"; break; case PlatformID.Win32Windows: { if (majorVersion == 4) { String csdVersion = osVersionInfo.CsdVersion; switch (minorVersion) { case 0: { if (csdVersion == "B" || csdVersion == "C") { name = "Windows 95 OSR2"; } else { name = "Windows 95"; } } break; case 10: { if (csdVersion == "A") { name = "Windows 98 Second Edition"; } else { name = "Windows 98"; } } break; case 90: name = "Windows Me"; break; } } break; } case PlatformID.Win32NT: { Byte productType = osVersionInfo.ProductTyp; switch (majorVersion) { case 3: name = "Windows NT 3.51"; break; case 4: switch (productType) { case 1: name = "Windows NT 4.0"; break; case 3: name = "Windows NT 4.0 Server"; break; } break; case 5: switch (minorVersion) { case 0: name = "Windows 2000"; break; case 1: name = "Windows XP"; break; case 2: name = "Windows Server 2003"; break; } break; case 6: switch (minorVersion) { case 0: switch (productType) { case 1: name = "Windows Vista"; break; case 3: name = "Windows Server 2008"; break; } break; case 1: switch (productType) { case 1: name = "Windows 7"; break; case 3: name = "Windows Server 2008 R2"; break; } break; } break; } break; } } // end switch (osVersion.Platform) } // end if (GetVersion()) return(name); }