private string GetServicePackInfo()
 {
     Utilities.OperatingSystemVersionInfo.NativeMethods.OSVersionInfoEx osvi = new Utilities.OperatingSystemVersionInfo.NativeMethods.OSVersionInfoEx {
         VersionInfoSize = Marshal.SizeOf(typeof(Utilities.OperatingSystemVersionInfo.NativeMethods.OSVersionInfoEx))
     };
     Utilities.OperatingSystemVersionInfo.NativeMethods.GetVersionEx(ref osvi);
     return(osvi.CSDVersion);
 }
        private string GetOSVersionInfo()
        {
            string str = "Unsupported Version";

            Utilities.OperatingSystemVersionInfo.NativeMethods.OSVersionInfoEx osvi = new Utilities.OperatingSystemVersionInfo.NativeMethods.OSVersionInfoEx {
                VersionInfoSize = Marshal.SizeOf(typeof(Utilities.OperatingSystemVersionInfo.NativeMethods.OSVersionInfoEx))
            };
            Utilities.OperatingSystemVersionInfo.NativeMethods.GetVersionEx(ref osvi);
            if ((2 != osvi.PlatformId) || (osvi.MajorVersion <= 4))
            {
                return(str);
            }
            if ((osvi.MajorVersion == 5) && (osvi.MinorVersion == 0))
            {
                str = "Windows 2000";
            }
            if ((osvi.MajorVersion == 5) && (osvi.MinorVersion == 1))
            {
                str = "Windows XP";
            }
            if ((osvi.MajorVersion == 5) && (osvi.MinorVersion == 2))
            {
                if (osvi.ProductType == 1)
                {
                    str = "Windows XP Professional x64";
                }
                else
                {
                    str = "Windows Server 2003";
                    if (Utilities.OperatingSystemVersionInfo.NativeMethods.GetSystemMetrics(0x59) != 0)
                    {
                        str = str + " R2";
                    }
                }
            }
            if ((osvi.MajorVersion == 6) && (osvi.MinorVersion == 0))
            {
                if (osvi.ProductType == 1)
                {
                    str = "Windows Vista";
                }
                else
                {
                    str = "Windows Server 2008";
                }
            }
            if ((osvi.MajorVersion != 6) || (osvi.MinorVersion != 1))
            {
                return(str);
            }
            if (osvi.ProductType == 1)
            {
                return("Windows 7");
            }
            return("Windows Server 2008 R2");
        }
        private string GetProductTypeInfo()
        {
            string str = string.Empty;

            Utilities.OperatingSystemVersionInfo.NativeMethods.OSVersionInfoEx osvi = new Utilities.OperatingSystemVersionInfo.NativeMethods.OSVersionInfoEx {
                VersionInfoSize = Marshal.SizeOf(typeof(Utilities.OperatingSystemVersionInfo.NativeMethods.OSVersionInfoEx))
            };
            Utilities.OperatingSystemVersionInfo.NativeMethods.GetVersionEx(ref osvi);
            if (osvi.MajorVersion > 5)
            {
                uint type = 0;
                Utilities.OperatingSystemVersionInfo.NativeMethods.GetProductInfo(osvi.MajorVersion, osvi.MinorVersion, osvi.ServicePackMajor, osvi.ServicePackMinor, ref type);
                switch (type)
                {
                case 0:
                    return("Unknown Product");

                case 1:
                    return("Ultimate Edition");

                case 2:
                    return("Home Basic Edition");

                case 3:
                    return("Home Premium Edition");

                case 4:
                    return("Enterprise Edition");

                case 5:
                    return("Home Basic N Edition");

                case 6:
                    return("Business Edition");

                case 7:
                    return("Server Standard (Full)");

                case 8:
                    return("Server Datacenter (Full)");

                case 9:
                    return("Windows Small Business Server");

                case 10:
                    return("Server Enterprise (Full)");

                case 11:
                    return("Starter Edition");

                case 12:
                    return("Server Datacenter (Core)");

                case 13:
                    return("Server Standard (Core)");

                case 14:
                    return("Server Enterprise (Core)");

                case 15:
                    return("Server Enterprise for Itanium-based Systems");

                case 0x10:
                    return("Business N Edition");

                case 0x11:
                    return("Web Server (Full)");

                case 0x12:
                    return("HPC Edition");

                case 0x13:
                    return("Home Server Edition");

                case 20:
                    return("Storage Server Express");

                case 0x15:
                    return("Storage Server Standard");

                case 0x16:
                    return("Storage Server Workgroup");

                case 0x17:
                    return("Storage Server Enterprise");

                case 0x18:
                    return("Windows Server 2008 for Windows Essential Server Solutions");

                case 0x19:
                    return("Windows Small Busines Server Premium");

                case 0x1a:
                    return("Home Premium N Edition");

                case 0x1b:
                    return("Enterprise N Edition");

                case 0x1c:
                    return("Ulitmate N Edition");

                case 0x1d:
                    return("Web Server (Core)");

                case 30:
                    return("Windows Essential Business Server Management Server");

                case 0x1f:
                    return("Windows Essential Business Server Security Server");

                case 0x20:
                    return("Windows Essential Business Server Messaging Server");

                case 0x21:
                    return("Server Foundation");

                case 0x22:
                case 0x2b:
                case 0x2c:
                case 0x2d:
                case 0x2e:
                case 50:
                case 0x33:
                case 0x34:
                case 0x35:
                case 0x36:
                case 0x37:
                case 0x38:
                case 0x39:
                case 0x3a:
                case 0x3b:
                case 60:
                case 0x3d:
                case 0x3e:
                case 0x3f:
                case 0x40:
                case 0x41:
                    return(str);

                case 0x23:
                    return("Windows Server 2008 without Hyper-V for Windows Essential Server Solutions");

                case 0x24:
                    return("Server Standard without Hyper-V (Full)");

                case 0x25:
                    return("Server Datacenter without Hyper-V (Full)");

                case 0x26:
                    return("Server Enterprise without Hyper-V (Full)");

                case 0x27:
                    return("Server Datacenter without Hyper-V (Core)");

                case 40:
                    return("Server Standard without Hyper-V (Core)");

                case 0x29:
                    return("Server Enterprise without Hyper-V (Core)");

                case 0x2a:
                    return("Microsoft Hyper-V Server");

                case 0x2f:
                    return("Starter N Edition");

                case 0x30:
                    return("Professional Edition");

                case 0x31:
                    return("Professional N Edition");

                case 0x42:
                    return("Starter E Edition");

                case 0x43:
                    return("Home Basic E Edition");

                case 0x44:
                    return("Home Premium E Edition");

                case 0x45:
                    return("Professional E Edition");

                case 70:
                    return("Enterprise E Edition");

                case 0x47:
                    return("Ultimate E Edition");

                case 0xabcdabcd:
                    return("Unlicensed or Expired");
                }
            }
            return(str);
        }