Как получить «дружественное» название версии ОС? - PullRequest
54 голосов
/ 23 февраля 2009

Я ищу элегантный способ получить версию ОС, такую ​​как: «Windows XP Professional Service Pack 1» или «Windows Server 2008 Standard Edition» и т. Д.

Есть ли элегантный способ сделать это?

Меня также интересует архитектура процессора (например, x86 или x64).

Ответы [ 11 ]

0 голосов
/ 19 сентября 2018

Раскрытие информации: после публикации я понял, что зависел от библиотеки методов расширения Nuget с именем Z.ExntensionMethods, которая содержит IndexOf()

using Microsoft.VisualBasic.Devices;

string SimpleOSName()
{
    var name = new ComputerInfo().OSFullName;
    var parts = name.Split(' ').ToArray();
    var take = name.Contains("Server")?3:2;
    return string.Join(" ", parts.Skip(parts.IndexOf("Windows")).Take(take));
}

Быстрее производительность using System.Management;

string SimpleOSName()
{
    var name = new ManagementObjectSearcher("SELECT Caption FROM Win32_OperatingSystem")
        .Get().Cast<ManagementObject>()
        .Select(x => x.GetPropertyValue("Caption").ToString())
        .First();
    var parts = name.Split(' ').ToArray();
    var take = name.Contains("Server")?3:2;
    return string.Join(" ", parts.Skip(parts.IndexOf("Windows")).Take(take));
}

пример вывода:

Windows 7

Windows Server 2008

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...