-1

I need to check if my app is run on windows server 2012 and above.

How to check this?

I only know how to check if it's windows server or not:

class OS
{
    public static bool IsWindowsServer()
    {
        return OS.IsOS(OS.OS_ANYSERVER);
    }

    const int OS_ANYSERVER = 29;

    [DllImport("shlwapi.dll" , SetLastError = true , EntryPoint = "#437")]
    private static extern bool IsOS(int os);


    static void Main(string[] args)
    {

        Console.WriteLine(IsWindowsServer());
    }

}
  • It would appear you have taken [this answer](https://stackoverflow.com/a/3138781/11683). Have you tried [the next one](https://stackoverflow.com/a/3138689/11683)? – GSerg Apr 01 '18 at 12:21

1 Answers1

0

Add the method

public static bool IWindowsServerOver2012()
{
    if (!IsWindowsServer()) return false;

    var osVersion = Environment.OSVersion.Version;
    return osVersion.Major > 6 || (osVersion.Major == 6 && osVersion.Minor >= 2);
}

OSVersions minor and major verions are get from https://stackoverflow.com/a/2819962/2313323

In order to get correct version using Environment.OSVersion it would be better to add an app.manifest to your application uncomment any suportedOs taht you want to use

<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
  <!-- A list of the Windows versions that this application has been tested on and is
       is designed to work with. Uncomment the appropriate elements and Windows will 
       automatically selected the most compatible environment. -->

  <!-- Windows Vista -->
  <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />

  <!-- Windows 7 -->
  <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />

  <!-- Windows 8 -->
  <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />

  <!-- Windows 8.1 -->
  <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />

  <!-- Windows 10 -->
  <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />

</application>
</compatibility>
pagratios
  • 384
  • 2
  • 12
  • I checked that major is grater than 2 but the correct is to check if major is grater than 6 or if it is 6 that minor greater or equal to 2 – pagratios Apr 01 '18 at 12:45