50% OFF!!!

Tuesday, November 23, 2010

How to determine the Windows version by using Visual C# | windows 7 windows vista

Here is a good code includes Windows 7 and Windows Vista recognaizer.

Code:
 
 
 
 
internal enum WindowsVersions { UnKnown, Win95, Win98, WinMe, WinNT3or4, Win2000, WinXP, WinServer2003, WinVista, Win7, Win8, MacOSX, Unix, Xbox };
internal static WindowsVersions GetCurrentWindowsVersion()
{
    // Get OperatingSystem information from the system namespace.
    System.OperatingSystem osInfo = System.Environment.OSVersion;
 
    // Determine the platform.
    if (osInfo.Platform == System.PlatformID.Win32Windows)
    {
        // Platform is Windows 95, Windows 98, Windows 98 Second Edition, or Windows Me.
        switch (osInfo.Version.Minor)
        {
            case 0:
                //Console.WriteLine("Windows 95");
                return WindowsVersions.Win95;
 
            case 10:
                //if (osInfo.Version.Revision.ToString() == "2222A")
                //    Console.WriteLine("Windows 98 Second Edition");
                //else
                //    Console.WriteLine("Windows 98");
                return WindowsVersions.Win98;
 
            case 90:
                //Console.WriteLine("Windows Me");
                return WindowsVersions.WinMe;
        }
    }
    else if (osInfo.Platform == System.PlatformID.Win32NT)
    {
        // Platform is Windows NT 3.51, Windows NT 4.0, Windows 2000, or Windows XP.
        switch (osInfo.Version.Major)
        {
            case 3:
            case 4:
                //Console.WriteLine("Windows NT 3.51"); // = 3
                //Console.WriteLine("Windows NT 4.0");  // = 4
                return WindowsVersions.WinNT3or4;
 
            case 5:
                switch (osInfo.Version.Minor)
                {
                    case 0:
                        //name = "Windows 2000";
                        return WindowsVersions.Win2000;
                    case 1:
                        //name = "Windows XP";
                        return WindowsVersions.WinXP;
                    case 2:
                        //name = "Windows Server 2003";
                        return WindowsVersions.WinServer2003;
                }
                break;
 
            case 6:
                switch (osInfo.Version.Minor)
                {
                    case 0:
                        // Windows Vista or Windows Server 2008 (distinct by rpoduct type)
                        return WindowsVersions.WinVista;
 
                    case 1:
                        return WindowsVersions.Win7;
 
                    case 2:
                        return WindowsVersions.Win8;
                }
                break;
        }
    }
    else if (osInfo.Platform == System.PlatformID.Unix)
    {
        return WindowsVersions.Unix;
    }
    else if (osInfo.Platform == System.PlatformID.MacOSX)
    {
        return WindowsVersions.MacOSX;
    }
    else if (osInfo.Platform == PlatformID.Xbox)
    {
        return WindowsVersions.Xbox;
    }
    return WindowsVersions.UnKnown;
}
 
 
 
 
 
2013/07/02: added WIN8 support
 

6 comments:

  1. windows 8 = NT 6.2
    I updated the code.

    ReplyDelete
  2. You comments 'Windows Vista or Windows Server 2008 (distinct by product type)' mean you should get the ProductType not using Pinvoke and OSVERSIONINFOEX!? Where is that ProductType in .NET Version prop?
    Thanx.
    Mike

    ReplyDelete
  3. windows 8.1 = 6(mayor), 3(minor)
    update.

    ReplyDelete
  4. here you can find the most recent versions of windows: http://msdn.microsoft.com/en-us/library/windows/desktop/ms724832(v=vs.85).aspx

    ReplyDelete