Как я могу обнаружить версии ОС Windows в .NET?
Какой код я могу использовать?
System.Environment.OSVersion
содержит информацию, необходимую для различения большинства основных выпусков ОС Windows, но не всех. Он состоит из трех компонентов, которые соответствуют следующим версиям Windows:
+------------------------------------------------------------------------------+
| | PlatformID | Major version | Minor version |
+------------------------------------------------------------------------------+
| Windows 95 | Win32Windows | 4 | 0 |
| Windows 98 | Win32Windows | 4 | 10 |
| Windows Me | Win32Windows | 4 | 90 |
| Windows NT 4.0 | Win32NT | 4 | 0 |
| Windows 2000 | Win32NT | 5 | 0 |
| Windows XP | Win32NT | 5 | 1 |
| Windows 2003 | Win32NT | 5 | 2 |
| Windows Vista | Win32NT | 6 | 0 |
| Windows 2008 | Win32NT | 6 | 0 |
| Windows 7 | Win32NT | 6 | 1 |
| Windows 2008 R2 | Win32NT | 6 | 1 |
| Windows 8 | Win32NT | 6 | 2 |
| Windows 8.1 | Win32NT | 6 | 3 |
+------------------------------------------------------------------------------+
| Windows 10 | Win32NT | 10 | 0 |
+------------------------------------------------------------------------------+
Для библиотеки, которая позволяет получить более полное представление о точном выпуске Windows, в котором выполняется текущая среда выполнения, отметьте галочкой из этой библиотеки .
Важное примечание : если в манифесте исполняемой сборки явно не указано, что ваша сборка exe совместима с Windows 8.1 и Windows 10.0, System.Environment.OSVersion
вернет версию Windows 8, которая это 6,2 вместо 6,3 и 10,0! Источник: здесь .
Один способ:
public string GetOSVersion()
{
int _MajorVersion = Environment.OSVersion.Version.Major;
switch (_MajorVersion) {
case 5:
return "Windows XP";
case 6:
switch (Environment.OSVersion.Version.Minor) {
case 0:
return "Windows Vista";
case 1:
return "Windows 7";
default:
return "Windows Vista & above";
}
break;
default:
return "Unknown";
}
}
Затем просто оберните функцию select case.
Через Environment.OSVersion
, который «Получает объект System.OperatingSystem, содержащий идентификатор текущей платформы и номер версии».
Я использовал это, когда мне нужно было определить различные версии операционных систем Microsoft:
string getOSInfo()
{
//Get Operating system information.
OperatingSystem os = Environment.OSVersion;
//Get version information about the os.
Version vs = os.Version;
//Variable to hold our return value
string operatingSystem = "";
if (os.Platform == PlatformID.Win32Windows)
{
//This is a pre-NT version of Windows
switch (vs.Minor)
{
case 0:
operatingSystem = "95";
break;
case 10:
if (vs.Revision.ToString() == "2222A")
operatingSystem = "98SE";
else
operatingSystem = "98";
break;
case 90:
operatingSystem = "Me";
break;
default:
break;
}
}
else if (os.Platform == PlatformID.Win32NT)
{
switch (vs.Major)
{
case 3:
operatingSystem = "NT 3.51";
break;
case 4:
operatingSystem = "NT 4.0";
break;
case 5:
if (vs.Minor == 0)
operatingSystem = "2000";
else
operatingSystem = "XP";
break;
case 6:
if (vs.Minor == 0)
operatingSystem = "Vista";
else if (vs.Minor == 1)
operatingSystem = "7";
else if (vs.Minor == 2)
operatingSystem = "8";
else
operatingSystem = "8.1";
break;
case 10:
operatingSystem = "10";
break;
default:
break;
}
}
//Make sure we actually got something in our OS check
//We don't want to just return " Service Pack 2" or " 32-bit"
//That information is useless without the OS version.
if (operatingSystem != "")
{
//Got something. Let's prepend "Windows" and get more info.
operatingSystem = "Windows " + operatingSystem;
//See if there's a service pack installed.
if (os.ServicePack != "")
{
//Append it to the OS name. i.e. "Windows XP Service Pack 3"
operatingSystem += " " + os.ServicePack;
}
//Append the OS architecture. i.e. "Windows XP Service Pack 3 32-bit"
//operatingSystem += " " + getOSArchitecture().ToString() + "-bit";
}
//Return the information we've gathered.
return operatingSystem;
}
Источник: здесь
Как предложил Р. Бемроуз, если вы делаете специфические функции Windows 7, вам следует посмотреть на Windows® API Code Pack for Microsoft® .NET Framework.
Он содержит класс CoreHelpers
, который позволяет определить ОС, на которой вы сейчас работаете (только XP и выше, это требование для .NET сегодня)
Он также предоставляет несколько вспомогательных методов. Например, если вы хотите использовать список переходов в Windows 7, существует класс TaskbarManager
, который предоставляет свойство IsPlatformSupported
, и оно вернет true, если вы находитесь на Windows 7 и выше.