在C#中获取Windows 10中的当前版本操作系统

时间:2016-11-18 08:06:54

标签: c# operating-system windows-10 version

我使用C#。我尝试获取当前版本的操作系统:

OperatingSystem os = Environment.OSVersion;
Version ver = os.Version;

我上了 Windows 10 6.2

6.2 Windows 8 WindowsServer 2012 Detect Windows version in .net

我找到了以下解决方案(How can I detect if my app is running on Windows 10)。

static bool IsWindows10()
{
  var reg = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion");
  string productName = (string)reg.GetValue("ProductName");
  return productName.StartsWith("Windows 10");
}

这是在C#中获取当前版本的最佳方式?

2 个答案:

答案 0 :(得分:6)

application manifest添加到您的应用中,并将supportedOS Id Windows 8.1和Windows 10添加到清单中:

<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> 
        <application> 
            <!-- Windows 10 --> 
            <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
            <!-- Windows 8.1 -->
            <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
        </application> 
    </compatibility>

现在Environment.OSVersion包含适用于Windows 8.1和Windows 10而非6.2的正确数据,表示您运行的是Windows 8.这是change since Windows 8.1

答案 1 :(得分:0)

以下是Microsoft官方链接,指示how to get the System Version。它实际上是对Version API Helper Functions

的调用

所以基本上你必须将这段代码转换成C#,因为它是用C ++编写的,然后只保留Windows 10部分......

#include <windows.h>
#include <stdio.h>
#include <VersionHelpers.h>

int 
__cdecl
wmain(
    __in int argc, 
    __in_ecount(argc) PCWSTR argv[]
    )
{
    UNREFERENCED_PARAMETER(argc);
    UNREFERENCED_PARAMETER(argv);
    if (IsWindows10OrGreater())
    {
        printf("Windows10OrGreater\n");
    }
}

如果您想尝试阅读代码,可以查看this one link。此DLL可用于获取有关操作系统的信息......