Search code examples
c#.netwindowsoperating-system

Detect Windows version in .NET


How can I detect the Windows OS versions in .NET?

What code can I use?


Solution

  • System.Environment.OSVersion has the information you need for distinguishing most Windows OS major releases, but not all. It consists of three components which map to the following Windows versions:

    +------------------------------------------------------------------------------+
    |                    |   PlatformID    |   Major version   |   Minor version   |
    +------------------------------------------------------------------------------+
    | Windows 95         |  Win32Windows   |         4         |          0        |
    | Windows 98         |  Win32Windows   |         4         |         10        |
    | Windows Me         |  Win32Windows   |         4         |         90        |
    | Windows NT 4.0     |  Win32NT        |         4         |          0        |
    | Windows 2000       |  Win32NT        |         5         |          0        |
    | Windows XP         |  Win32NT        |         5         |          1        |
    | Windows 2003       |  Win32NT        |         5         |          2        |
    | Windows Vista      |  Win32NT        |         6         |          0        |
    | Windows 2008       |  Win32NT        |         6         |          0        |
    | Windows 7          |  Win32NT        |         6         |          1        |
    | Windows 2008 R2    |  Win32NT        |         6         |          1        |
    | Windows 8          |  Win32NT        |         6         |          2        |
    | Windows 8.1        |  Win32NT        |         6         |          3        |
    +------------------------------------------------------------------------------+
    | Windows 10         |  Win32NT        |        10         |          0        |
    +------------------------------------------------------------------------------+
    

    For a library that allows you to get a more complete view of the exact release of Windows that the current execution environment is running in, check out this library.

    Important note: if your executable assembly manifest doesn't explicitly state that your exe assembly is compatible with Windows 8.1 and Windows 10.0, System.Environment.OSVersion will return Windows 8 version, which is 6.2, instead of 6.3 and 10.0! Source: here.

    Update: In .NET 5.0 and later, System.Environment.OSVersion always returns the actual OS version. For more information, see Environment.OSVersion returns the correct operating system version.