Я провел исследование по способу получения текущей операционной системы системы с использованием C#
.Получение операционной системы с использованием C#
Кажется, что нет ни одного ответа, как во многих случаях, но всем им кажется несколько лет. Некоторые из которых я пытался использовать и основывать свой код, не работал.
Так что я придумал мой собственный код:
var os = System.Environment.OSVersion;
string currentOS = null;
switch(os.Platform)
{
case PlatformID.Win32S:
currentOS = "Windows 3.1";
break;
case PlatformID.Win32Windows:
switch(os.Version.Minor)
{
case 0:
currentOS = "Windows 95";
break;
case 10:
currentOS = "Windows 98";
break;
default:
currentOS = "Unknown";
break;
}
break;
case PlatformID.Win32NT:
switch(os.Version.Major)
{
case 3:
currentOS = "Windows NT 3.51";
break;
case 4:
currentOS = "Windows NT 4.0";
break;
case 5:
switch(os.Version.Minor)
{
case 0:
currentOS = "Windows 2000";
break;
case 1:
currentOS = "Windows XP";
break;
case 2:
currentOS = "Windows 2003";
break;
default:
currentOS = "Unknown";
break;
}
break;
case 6:
switch(os.Version.Minor)
{
case 0:
currentOS = "Windows Vista";
break;
case 1:
currentOS = "Windows 2008";
break;
case 2:
currentOS = "Windows 7";
break;
default:
currentOS = "Unknown";
break;
}
break;
default:
currentOS = "Unknown";
break;
}
break;
case PlatformID.WinCE:
currentOS = "Windows CE";
break;
case PlatformID.Unix:
currentOS = "Unix";
break;
default:
currentOS = "Unknown";
break;
}
Я проверили этот код на моем ноутбуке, работающем под управлением Windows 7, он возвращает windows 2008
. Что может быть причиной этого, есть ли что-то, что я должен изменить?
Код просто неверный, он говорит, что версия 6.1 является 'Windows 2008' вместо' Windows 7'. Он также никак не справляется с 'Windows 8'. # – DavidG
Ну * Windows 7 * является ** NT 6.1 **, а также * Windows Server 2008 R2 *. Ознакомьтесь с этим списком для получения дополнительной информации: [Список версий Microsoft Windows] (https://en.wikipedia.org/wiki/List_of_Microsoft_Windows_versions) – MrPaulch