private static bool UseOSVersionInfoEx(OsVersionInfo info)
        {
            var b = NativeMethods.GetVersionEx(info);

            if (!b)
            {
                var error = Marshal.GetLastWin32Error();

                throw new InvalidOperationException(
                    "Failed to get OSVersionInfo. Error = 0x" +
                    error.ToString("8X", CultureInfo.CurrentCulture));
            }

            if (info.MajorVersion < 4) return false;
            if (info.MajorVersion > 4) return true;

            if (info.MinorVersion < 0) return false;
            if (info.MinorVersion > 0) return true;

            return info.CSDVersion == "Service Pack 6";
        }
Example #2
0
        private static bool UseOSVersionInfoEx(OsVersionInfo info)
        {
            var b = NativeMethods.GetVersionEx(info);

            if (!b)
            {
                var error = Marshal.GetLastWin32Error();

                throw new InvalidOperationException(
                          "Failed to get OSVersionInfo. Error = 0x" +
                          error.ToString("8X", CultureInfo.CurrentCulture));
            }

            if (info.MajorVersion < 4)
            {
                return(false);
            }
            if (info.MajorVersion > 4)
            {
                return(true);
            }

            if (info.MinorVersion < 0)
            {
                return(false);
            }
            if (info.MinorVersion > 0)
            {
                return(true);
            }

            return(info.CSDVersion == "Service Pack 6");
        }
        public OperatingSystemVersion()
        {
            var osVersionInfo = new OsVersionInfo();

            if (!UseOSVersionInfoEx(osVersionInfo))
                InitOsVersionInfo(osVersionInfo);
            else
                InitOsVersionInfoEx();
        }
Example #4
0
        private void InitOsVersionInfo(OsVersionInfo info)
        {
            OSPlatformId = GetOSPlatformId(info.PlatformId);

            OSMajorVersion = info.MajorVersion;
            OSMinorVersion = info.MinorVersion;
            BuildNumber    = info.BuildNumber;
            OSCSDVersion   = info.CSDVersion;
        }
        private static OsVersionInfo GetOsVersionInfo(OsVersion osVersion)
        {
            OsVersionInfo osVersionInfo = Versions.FirstOrDefault(v => v.OsVersion == osVersion);

            if (osVersionInfo == null)
            {
                throw new NotImplementedException("OSVersion:" + osVersion);
            }
            return(osVersionInfo);
        }
Example #6
0
        public OperatingSystemVersion()
        {
            var osVersionInfo = new OsVersionInfo();

            if (!UseOSVersionInfoEx(osVersionInfo))
            {
                InitOsVersionInfo(osVersionInfo);
            }
            else
            {
                InitOsVersionInfoEx();
            }
        }
    unsafe public static void Mainly()
    {
        OsVersionInfo versionInfo = new OsVersionInfo();

        versionInfo.OsVersionInfoSize = (uint)Marshal.SizeOf(versionInfo);
        bool res = GetVersion(ref versionInfo);

#if fixed
        Console.WriteLine(Marshal.PtrToStringAnsi(new IntPtr(versionInfo.ServicePackVersion)));
#else
        Console.WriteLine(versionInfo.ServicePackVersion);
#endif
    }
Example #8
0
        public static Version WindowsVersion()
        {
            try
            {
                var versionInfo = new OsVersionInfo();
                RtlGetVersion(out versionInfo);

                return(new Version((int)versionInfo.MajorVersion, (int)versionInfo.MinorVersion, (int)versionInfo.BuildNumber));
            }
            catch
            {
                return(new Version(0, 0, 0));
            }
        }
Example #9
0
        private async void Window_Loaded(object sender, RoutedEventArgs e)
        {
            var osInfo = OsVersionInfo.GetOsVersionInfo();

            if (osInfo.Major < 6 || osInfo.Major == 6 && osInfo.Minor < 2)
            {
                GenericMessageDialog.Show(string.Format(Celeste_Launcher_Gui.Properties.Resources.WindowsFeatureHelperUnsupportedOS, osInfo.FullName),
                                          DialogIcon.Warning);

                Close();
                return;
            }

            try
            {
                foreach (var feature in await Dism.GetWindowsFeatureInfo(new[] { "DirectPlay", "NetFx3" }))
                {
                    if (string.Equals(feature.Key, "DirectPlay", StringComparison.CurrentCultureIgnoreCase))
                    {
                        var(statusText, colorLabel, canBeEnabled) = GetLabelStatusForDismFeature(feature.Value);

                        DirectPlayStatusLabel.Text       = statusText;
                        DirectPlayStatusLabel.Foreground = new SolidColorBrush(colorLabel);
                        EnableDirectPlayBtn.IsEnabled    = canBeEnabled;
                    }
                    else if (string.Equals(feature.Key, "NetFx3", StringComparison.CurrentCultureIgnoreCase))
                    {
                        var(statusText, colorLabel, canBeEnabled) = GetLabelStatusForDismFeature(feature.Value);

                        NetFrameworkStatusLabel.Text       = statusText;
                        NetFrameworkStatusLabel.Foreground = new SolidColorBrush(colorLabel);
                        EnableNetFrameworkBtn.IsEnabled    = canBeEnabled;
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex, ex.Message);
                NetFrameworkStatusLabel.Text       = Celeste_Launcher_Gui.Properties.Resources.WindowsFeatureHelperFeatureNotSupportedError;
                NetFrameworkStatusLabel.Foreground = new SolidColorBrush(Colors.Red);
            }
        }
Example #10
0
        private void WindowsFeaturesToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var osInfo = OsVersionInfo.GetOsVersionInfo();

            if (osInfo.Major < 6 || osInfo.Major == 6 && osInfo.Minor < 2)
            {
                MsgBox.ShowMessage(
                    "Only for Windows 8 and more\r\n" +
                    $"Your current OS is {osInfo.FullName}",
                    @"Celeste Fan Project",
                    MessageBoxButtons.OK, MessageBoxIcon.Warning);

                return;
            }

            using (var form = new WindowsFeaturesForm())
            {
                form.ShowDialog();
            }
        }
Example #11
0
 public static extern bool GetVersionEx
 (
     [In, Out] OsVersionInfo osVersionInfo
 );
Example #12
0
 internal static extern uint RtlGetVersion(out OsVersionInfo versionInformation);
        public void GetVersionInfo()
        {
            OsVersionInfo info = SystemInformation.GetVersionInfo();

            info.MajorVersion.Should().BeGreaterOrEqualTo(6, "Windows 7 was 6.1");
        }
        private void InitOsVersionInfo(OsVersionInfo info)
        {
            OSPlatformId = GetOSPlatformId(info.PlatformId);

            OSMajorVersion = info.MajorVersion;
            OSMinorVersion = info.MinorVersion;
            BuildNumber = info.BuildNumber;
            OSCSDVersion = info.CSDVersion;
        }
Example #15
0
 private static extern bool GetVersionEx(ref OsVersionInfo osVersionInfo);
Example #16
0
 public static extern NTStatus RtlVerifyVersionInfo(
     ref OsVersionInfo VersionInfo,
     VersionTypeMask TypeMask,
     ulong ConditionMask);
Example #17
0
 public static extern uint RtlGetVersion(out OsVersionInfo versionInformation); // return type should be the NtStatus enum
Example #18
0
 public extern static Boolean GetVersionEx([In, Out] OsVersionInfo versionInfo);
Example #19
0
        /// <summary>
        /// Gets the operating system version
        /// </summary>
        /// <returns>OsVersionInfo object that contains windows version</returns>
        public static OsVersionInfo getOSInfo()
        {
            //Get Operating system information.
            OperatingSystem os = Environment.OSVersion;
            //Get version information about the os.
            Version vs = os.Version;

            //Variable to hold our return value
            OsVersionInfo operatingSystem = new OsVersionInfo();

            if (os.Platform == PlatformID.Win32Windows)
            {
                //This is a pre-NT version of Windows
                switch (vs.Minor)
                {
                    case 0:
                        operatingSystem = OsVersionInfo.Windows95;
                        break;
                    case 10:
                        if (vs.Revision.ToString() == "2222A")
                            operatingSystem = OsVersionInfo.Windows98SE;
                        else
                            operatingSystem = OsVersionInfo.Windows98;
                        break;
                    case 90:
                        operatingSystem = OsVersionInfo.WindowsME;
                        break;
                    default:
                        break;
                }
            }
            else if (os.Platform == PlatformID.Win32NT)
            {
                switch (vs.Major)
                {
                    case 3:
                        operatingSystem = OsVersionInfo.WindowsNT351;
                        break;
                    case 4:
                        operatingSystem = OsVersionInfo.WindowsNT40;
                        break;
                    case 5:
                        if (vs.Minor == 0)
                            operatingSystem = OsVersionInfo.Windows2000;
                        else
                            operatingSystem = OsVersionInfo.WindowsXP;
                        break;
                    case 6:
                        if (vs.Minor == 0)
                            operatingSystem = OsVersionInfo.WindowsVista;
                        else if (vs.Minor == 1)
                            operatingSystem = OsVersionInfo.Windows7;
                        else
                            operatingSystem = OsVersionInfo.Windows8;
                        break;
                    default:
                        operatingSystem = OsVersionInfo.Unknown;
                        break;
                }
            }
            return operatingSystem;
            
        } 
Example #20
0
 public static extern NTStatus RtlGetVersion(
     ref OsVersionInfo VersionInfo);
        /// <summary>
        ///     Compares the major/minor version of <paramref name="os" /> and <paramref name="osVersion" />.
        /// </summary>
        /// <example><see cref="System.Environment.OSVersion" />.Equals(OSVersion.Win7)</example>
        public static bool IsEqualTo(this OperatingSystem os, OsVersion osVersion)
        {
            OsVersionInfo osVersionInfo = GetOsVersionInfo(osVersion);

            return(GetMajorMinorVersion(os.Version) == GetMajorMinorVersion(osVersionInfo.OperatingSystem.Version));
        }
        /// <summary>
        ///     Compares the major/minor version of <paramref name="os" /> and <paramref name="osVersion" />.
        /// </summary>
        /// <example><see cref="System.Environment.OSVersion" />.IsGreaterThan(OSVersion.Win7)</example>
        public static bool IsGreaterThan(this OperatingSystem os, OsVersion osVersion)
        {
            OsVersionInfo osVersionInfo = GetOsVersionInfo(osVersion);

            return(GetMajorMinorVersion(os.Version) > GetMajorMinorVersion(osVersionInfo.OperatingSystem.Version));
        }
Example #23
0
        public static string GetSystemName()
        {
            OsVersionInfo osVersionInfo = default(OsVersionInfo);

            osVersionInfo.dwOSVersionInfoSize = Marshal.SizeOf(typeof(OsVersionInfo));
            if (OSVersionInfo.GetVersionEx(ref osVersionInfo))
            {
                OperatingSystem osVersion = Environment.OSVersion;
                switch (osVersion.Platform)
                {
                case PlatformID.Win32S:
                    return("Windows 3.1");

                case PlatformID.Win32Windows:
                    if (osVersion.Version.Major == 4)
                    {
                        string csdVersion = osVersionInfo.szCSDVersion;
                        if (osVersion.Version.Minor != 0)
                        {
                            if (osVersion.Version.Minor != 10)
                            {
                                if (osVersion.Version.Minor == 90)
                                {
                                    return("Windows Me");
                                }
                            }
                            else
                            {
                                if (csdVersion == "A")
                                {
                                    return("Windows 98 Second Edition");
                                }
                                return("Windows 98");
                            }
                        }
                        else
                        {
                            if (csdVersion == "B" || csdVersion == "C")
                            {
                                return("Windows 95 OSR2");
                            }
                            return("Windows 95");
                        }
                    }
                    break;

                case PlatformID.Win32NT:
                {
                    byte productType = osVersionInfo.wProductType;
                    switch (osVersion.Version.Major)
                    {
                    case 3:
                        return("Windows NT 3.51");

                    case 4:
                        switch (productType)
                        {
                        case 1:
                            return("Windows NT 4.0");

                        case 3:
                            return("Windows NT 4.0 Server");
                        }
                        break;

                    case 5:
                        switch (osVersion.Version.Minor)
                        {
                        case 0:
                            return("Windows 2000");

                        case 1:
                            return("Windows XP");

                        case 2:
                            return("Windows Server 2003");
                        }
                        break;

                    case 6:
                        switch (osVersion.Version.Minor)
                        {
                        case 0:
                            switch (productType)
                            {
                            case 1:
                                return("Windows Vista");

                            case 3:
                                return("Windows Server 2008");
                            }
                            break;

                        case 1:
                            switch (productType)
                            {
                            case 1:
                                return("Windows 7");

                            case 3:
                                return("Windows Server 2008 R2");
                            }
                            break;

                        case 2:
                            switch (productType)
                            {
                            case 1:
                                return("Windows 8");

                            case 3:
                                return("Windows Server 2012");
                            }
                            break;
                        }
                        break;
                    }
                    break;
                }

                case PlatformID.WinCE:
                    return("Windows CE");
                }
            }
            return("Unknown");
        }
 static extern bool GetVersion(ref OsVersionInfo lpVersionInfo);