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! Источник: здесь .
Я использовал это, когда мне нужно было определить различные версии операционной системы Microsoft:
Источник: здесь
источник
vs.Minor != 0
не обязательно бытьXP
или7
. Это может быть любой из тех серверных выпусков, которые будут иметь те же второстепенные версии. См. Здесь msdn.microsoft.com/en-us/library/windows/desktop/…Я использую
ManagementObjectSearcher
пространства именSystem.Management
Пример:
Результат:
Документация
источник
Как предположил Р. Бемроуз, если вы используете специальные функции Windows 7, вам следует взглянуть на Windows® API Code Pack для Microsoft® .NET Framework .
Он содержит
CoreHelpers
класс, который позволяет вам определить ОС, в которой вы сейчас находитесь (только для XP и выше, сейчас это требование для .NET)Он также предоставляет несколько вспомогательных методов. Например, предположим, что вы хотите использовать список переходов Windows 7, есть класс,
TaskbarManager
который предоставляет свойство с именем,IsPlatformSupported
и он вернет true, если вы используете Windows 7 и выше.источник
Вы можете использовать этот вспомогательный класс;
Пример кода здесь:
Я был найден по этому адресу: http://www.csharp411.com/wp-content/uploads/2009/01/OSInfo.cs
источник
Через
Environment.OSVersion
который "Получает объект System.OperatingSystem, который содержит текущий идентификатор платформы и номер версии".источник
Все это выглядит как очень сложные ответы для очень простой функции:
источник
Определить версию ОС:
источник
Это довольно старый вопрос, но мне недавно пришлось решить эту проблему, и я нигде не опубликовал свое решение.
Самый простой (и самый простой способ на мой взгляд) - просто использовать вызов pinvoke для RtlGetVersion
Где номера версий Major и Minor в этой структуре соответствуют значениям в таблице принятого ответа.
Это возвращает правильный номер версии Windows в отличие от устаревших функций GetVersion & GetVersionEx из kernel32
источник
Microsoft.VisualBasic
.using Microsoft.VisualBasic.Devices
;new ComputerInfo().OSFullName
Возвращаемое значение: «Microsoft Windows 10 Enterprise»
источник
В одну сторону:
Затем просто оберните выбранный регистр вокруг функции.
источник
Как насчет использования реестра, чтобы получить имя.
«HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion» имеет значение ProductName начиная с Windows XP.
Если вы используете .NET Framework 4.0 или выше. Вы можете удалить метод Is64BitOperatingSystem () и использовать Environment.Is64BitOperatingSystem .
источник
Первое решение
Чтобы убедиться, что вы получаете правильную версию,
Environment.OSVersion
вы должны добавитьapp.manifest
использование Visual Studio и раскомментировать следующиеsupportedOS
теги:Тогда в вашем коде вы можете использовать
Environment.OSVersion
так:пример
Например , в моей машине (
Windows 10.0 Build 18362.476
) результат будет так что неправильно :Добавив
app.manifest
и раскомментировав эти теги, я получу правильный номер версии:Альтернативное решение
Если вам не нравится добавление
app.manifest
в ваш проект, вы можете использовать то,OSDescription
что доступно с .NET Framework 4.7.1 и .NET Core 1.0.Примечание. Не забудьте добавить следующую инструкцию using в начало вашего файла.
Вы можете прочитать больше об этом и поддерживаемых платформах здесь .
источник
Приведенные выше ответы дадут мне
Major
версию6
для Windows 10.Решение, которое я нашел для работы без добавления дополнительных библиотек VB, было следующим:
Я не считаю это лучшим способом получить версию, но положительным моментом является то, что в oneliner нет лишних библиотек, и в моем случае проверка того, что она содержится,
"10"
была достаточно хорошей.источник
Не слишком усложняйте проблему.
источник
Major
часть версии. Плюс это сообщает "Win7!" в операционной системе Windows NT / Me / 98/95. Это также не справится с будущими версиями операционных систем