Пример #1
0
 public static extern int RtlGetVersion(ref RtlOSVersionInfoEx lpVersionInformation);
Пример #2
0
        private string GetOsVersionString()
        {
            var name = "unknown";

            var v = new RtlOSVersionInfoEx
            {
                dwOSVersionInfoSize = (uint)Marshal.SizeOf(typeof(RtlOSVersionInfoEx))
            };

            RtlGetVersion(ref v);
            var isWorkstation = v.wProductType == VER_NT_WORKSTATION;

            if (v.dwMajorVersion == 3)
            {
                name = "Windows NT 3.51";
            }
            else if (v.dwMajorVersion == 4)
            {
                if (v.dwPlatformId == (uint)PlatformID.Win32Windows)
                {
                    if (v.dwMinorVersion == 0)
                    {
                        name = "Windows 95";
                    }
                    else if (v.dwMinorVersion == 10)
                    {
                        name = "Windows 98";
                    }
                    else if (v.dwMinorVersion == 90)
                    {
                        name = "Windows ME";
                    }
                }
                else if (v.dwPlatformId == (uint)PlatformID.Win32NT)
                {
                    name = "Windows NT 4.0";
                }
            }
            else if (v.dwMajorVersion == 5)
            {
                if (v.dwMinorVersion == 0)
                {
                    name = "Windows 2000";
                }
                else if (v.dwMinorVersion == 1)
                {
                    name = "Windows XP";
                }
                else if (v.dwMinorVersion == 2)
                {
                    name = "Windows .NET Server";
                }
            }
            else if (v.dwMajorVersion == 6)
            {
                if (v.dwMinorVersion == 0)
                {
                    name = isWorkstation ? "Windows Vista" : "Windows 2008";
                }
                else if (v.dwMinorVersion == 1)
                {
                    name = isWorkstation ? "Windows 7" : "Windows 2008 R2";
                }
                else if (v.dwMinorVersion == 2)
                {
                    name = isWorkstation ? "Windows 8" : "Windows 2012";
                }
                else if (v.dwMinorVersion == 3)
                {
                    name = isWorkstation ? "Windows 8.1" : "Windows 2012 R2";
                }
            }
            else if (v.dwMajorVersion == 10)
            {
                name = isWorkstation ? "Windows 10" : "Windows 2016";
            }

            var os = default(string);

            if (string.IsNullOrEmpty(v.szCSDVersion))
            {
                os = string.Format("{0} (Build {1})", name, v.dwBuildNumber);
            }
            else
            {
                os = string.Format("{0} (Build {1}, {2})", name, v.dwBuildNumber, v.szCSDVersion);
            }

#if DEBUG
            System.Diagnostics.Debug.WriteLine(string.Format("OS String: {0}", os));
#endif
            return(os);
        }