2016-11-18 4 views
1

Я использую C#. Я стараюсь, чтобы получить текущую версию ОС:Получить текущую версию ОС в Windows 10 в 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#?

+1

Возможно, проверьте это: http://stackoverflow.com/questions/6331826/get-os-version-friendly-name-in-c-sharp –

+1

@olga добавили ли вы манифест + supportOS? – magicandre1981

ответ

3

Добавить 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.

+0

Спасибо, это работает! – Olga

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. Эта библиотека может быть использована для получения информации о OS ...