Как получить версию накопительного обновления Windows? [Дубликат]

Предполагая, что testFunction() не является тривиальным и / или что его нельзя изменить, его можно обернуть в свою собственную функцию с помощью блока tryCatch (). Например:

> FaultTolerantTestFunction <- function(date_in) {
+    tryCatch({ret <- testFunction(date_in);}, error = function(e) {ret <<- NA});
+    ret
+ }
> FaultTolerantTestFunction('bozo')
[1] NA
> FaultTolerantTestFunction('2010-03-21')
[1] "2010-03-21"
7
задан Joe Gayetty 29 September 2016 в 19:29
поделиться

3 ответа

в соответствии с официальной ссылкой MSDN есть определенный номер версии для каждой версии Windows. в dot net это можно прочитать с помощью объекта Environment.OSVersion.

Console.WriteLine("OSVersion: {0}", Environment.OSVersion);
//output: OSVersion: Microsoft Windows NT 6.2.9200.0

То, что вы ищете, называется ReleaseID, а не версией окон. это можно прочитать из раздела реестра:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion\releaseId

using Microsoft.Win32;

string releaseId = Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "ReleaseId", "").ToString();
Console.WriteLine(releaseId);
15
ответ дан Scott Perham 18 August 2018 в 01:06
поделиться
  • 1
    Отлично! Проверено для работы на моем ПК с «Windows 10 версии 1511». и другой ПК с "вариантом 1607" - что и ожидалось. – Joe Gayetty 29 September 2016 в 20:17
  • 2
    @Stavm - отличная информация. BTW, Microsoft делает ссылкой на ReleaseId (например, «1803») в качестве версии, подробнее см. информацию о выпуске Windows 10 . – Ken 1 May 2018 в 21:29

В дополнение к ответу Скотта вы также можете получить имя продукта (например, Windows 10 Pro) с этим (* я не беру кредит, так как Скотт является тем, кто упомянул путь к реестру +, я повторно использую его код ниже) :

using Microsoft.Win32;

string ProductName = 
Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "ProductName", "").ToString();
Console.WriteLine(ProductName);
0
ответ дан A. Kabrun 18 August 2018 в 01:06
поделиться
 private static ManagementObject GetMngObj(string className)
    {
        var wmi = new ManagementClass(className);

        foreach (var o in wmi.GetInstances())
        {
            var mo = (ManagementObject)o;
            if (mo != null) return mo;
        }

        return null;
    }

    public static string GetOsVer()
    {
        try
        {
            ManagementObject mo = GetMngObj("Win32_OperatingSystem");

            if (null == mo)
                return string.Empty;

            return mo["Version"] as string;
        }
        catch (Exception e)
        {
            return string.Empty;
        }
    }

Как использовать:

Console.WriteLine(GetOsVer());

Результат: 10.0.0.1299

0
ответ дан nap 18 August 2018 в 01:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: