【问题标题】:Check if windows server above 2012检查windows server是否高于2012
【发布时间】:2018-09-10 21:02:51
【问题描述】:

我需要检查我的应用程序是否在 windows server 2012 及更高版本上运行。

如何检查?

我只知道如何检查它是否是windows服务器:

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());
    }

}

【问题讨论】:

标签: c#


【解决方案1】:

添加方法

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

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

OSVersions 次要和主要版本来自https://stackoverflow.com/a/2819962/2313323

为了使用 Environment.OSVersion 获得正确的版本,最好将 app.manifest 添加到您的应用程序中,取消注释您想要使用的任何 suportedOs

<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>

【讨论】:

  • 我检查了major是否大于2,但正确的是检查major是否大于6,或者如果major大于或等于2是6
猜你喜欢
  • 2016-04-23
  • 2021-06-19
  • 2015-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多