- Определяем установленную версию .NET Framework на компьютере
- Способ 1: ASoft .NET Version Detector
- Способ 2: Раздел «Программы и компоненты»
- Способ 3: Редактор реестра
- Обнаружение .NET Framework 4.5 и более поздних версий
- Минимальная версия
- Использование редактора реестра
- Использование PowerShell для проверки минимальной версии
- Отправка запросов в реестр с помощью кода
- Запрос реестра с помощью кода PowerShell
- Как узнать версию .NET Framework с помощью PowerShell?
- Обнаружение .NET Framework с 1.0 по 4.0
- Использование редактора реестра (более ранние версии платформы)
- Запрос реестра с помощью кода (более ранние версии платформы)
- Проверить версию .Net Framework на удаленных компьютерах
- Определение реализации и версии .NET, в которой работает приложение
Определяем установленную версию .NET Framework на компьютере
Практически все представленные ниже способы не требуют использования дополнительного программного обеспечения для определения версии необходимой библиотеки, но мы не можем не отметить сторонние решения, которые могут быть полезны пользователям разных категорий. Поэтому мы предлагаем вам сначала ознакомиться со всеми вариантами, а уже потом выбирать тот, который вам понравится.
Способ 1: ASoft .NET Version Detector
О стороннем программном обеспечении мы уже упоминали выше, поэтому давайте сразу с этим разберемся. В качестве дополнительного решения мы будем использовать ASoft .NET Version Detector — бесплатное программное обеспечение для определения версий .NET Framework, установленных на компьютере. Вся задача выполняется всего в несколько кликов:
- Перейдите по ссылке выше и нажмите соответствующую кнопку на веб-сайте, чтобы начать загрузку ASoft .NET Version Detector.
- Когда загрузка завершится, запустите программу из архива.
- Подтвердите условия лицензионного соглашения.
- В отдельных столбцах будут перечислены все существующие версии рассматриваемого компонента и источники, из которых они были получены.
- Если вам нужно скачать какой-либо из них, нажмите на данную кнопку.
Хотя ASoft .NET Version Detector является бесплатным и удобным программным обеспечением, не все пользователи имеют желание или возможность его скачивать. В таких случаях мы рекомендуем использовать стандартные средства операционной системы.
Способ 2: Раздел «Программы и компоненты»
Практически каждый пользователь операционной системы Windows хотя бы раз сталкивался с разделом «Программы и компоненты». Обычно туда заходят, чтобы удалить какой-нибудь софт или проверить последние установленные обновления. На этот раз мы используем эту информацию, чтобы получить информацию о версии .NET Framework.
- откройте «Пуск» и перейдите в «Панель управления».
- Среди всех иконок вы найдете «Программы и компоненты». Дважды щелкните по нему, чтобы пойти.
- Прокрутите список вниз и найдите NET.Framework. Версия указана в конце строки.
Если вы вдруг обнаружите, что строк больше одной и указаны разные версии, это означает, что на этом компьютере установлен весь список сборок и добавлены все файлы этих библиотек.
Способ 3: Редактор реестра
Значения большинства системных параметров операционной системы хранятся в редакторе реестра в виде отдельных файлов определенных форматов. Пользователи, уже сталкивавшиеся с этим меню, знают, что найти там нужную информацию, не пользуясь специальными инструкциями, достаточно сложно. Это касается и определения того, о какой версии библиотеки идет речь. Поэтому мы предлагаем вам ознакомиться со следующим руководством.
- откройте инструмент «Выполнить», удерживая комбинацию Win + R. Введите в поле regedit и нажмите клавишу Enter или виртуальную кнопку «ОК».
- Перейдите по пути HKEY_LOCAL_MACHINESOFTWAREMicrosoftNET Framework SetupNDP, где вы найдете отдельные каталоги версий .NET Framework.
- Выберите один из них и разверните каталог «Клиент» или «Полный». Найдите там параметр установки. Если значение равно 1, эта версия установлена на компьютере. 0 указывает на отсутствие компонента.
Далее мы вернемся к редактору реестра и покажем, как можно еще проще найти установленную версию компонента, даже не открывая это меню.
Обнаружение .NET Framework 4.5 и более поздних версий
Версия .NET Framework (4.5 и более поздних версий), установленная на вашем компьютере, указана в реестре по адресу HKEY_LOCAL_MACHINESOFTWAREMicrosoftNET Framework SetupNDPv4Full. Если полный подраздел отсутствует, .NET Framework 4.5 или более поздней версии не установлена.
Примечание
NET Framework Setup в пути реестра не начинается с точки.
Значение Release REG_DWORD в реестре представляет установленную версию .NET Framework.
.NET Framework 4.5 | Все версии операционной системы Windows: 378389 |
.NET Framework 4.5.1 | Windows 8.1 и Windows Server 2012 R2: 378675 Все остальные версии операционной системы Windows: 378758 |
.NET Framework 4.5.2 | Все версии операционной системы Windows: 379893 |
.NET Framework 4.6 | Windows 10: 393295 Все остальные версии операционной системы Windows: 393297 |
.NET Framework 4.6.1 | Ноябрьское обновление Windows 10: 394254 Все остальные версии операционной системы Windows (включая Windows 10): 394271 |
.NET Framework 4.6.2 | В Windows 10 и Windows Server 2016 Anniversary Update: 394802 Все остальные версии операционной системы Windows (включая другие операционные системы Windows 10): 394806 |
.NET Framework 4.7 | Обновление для разработчиков Windows 10: 460798 Все остальные версии операционной системы Windows (включая другие операционные системы Windows 10): 460805 |
.NET Framework 4.7.1 | Обновление Windows 10 Fall Creators и версия Windows Server 1709: 461308 Все остальные версии операционной системы Windows (включая другие операционные системы Windows 10): 461310 |
.NET Framework 4.7.2 | Обновление Windows 10 за апрель 2018 г и версия Windows Server 1803: 461808 Все остальные операционные системы, кроме Windows 10 April 2018 Update и Windows Server версии 1803: 461814 |
.NET Framework 4.8 | Обновление Windows 10 за май 2019 г и обновление Windows 10 за ноябрь 2019 г.: 528040 Обновление Windows 10 за май 2020 г., обновление за октябрь 2020 г., обновление за май 2021 г., обновление за ноябрь 2021 г и обновление 2022 г.: 528372 Windows 11 и Windows Server 2022: 528449 Все остальные версии операционной системы Windows (включая другие операционные системы Windows 10): 528049 |
.NET Framework 4.8.1 | Обновление Windows 11 2022: 533320 Все остальные операционные системы Windows: 533325 |
Минимальная версия
Чтобы определить, присутствует ли минимальная версия .NET Framework, найдите значение REG_DWORD выпуска, которое больше или равно соответствующему значению, указанному в таблице ниже. Например, если приложение работает на .NET Framework 4.8 или более поздней версии, проверьте, не превышает ли значение выпуска REG_DWORD 528040.
.NET Framework 4.5 | 378389 |
.NET Framework 4.5.1 | 378675 |
.NET Framework 4.5.2 | 379893 |
.NET Framework 4.6 | 393295 |
.NET Framework 4.6.1 | 394254 |
.NET Framework 4.6.2 | 394802 |
.NET Framework 4.7 | 460798 |
.NET Framework 4.7.1 | 461308 |
.NET Framework 4.7.2 | 461808 |
.NET Framework 4.8 | 528040 |
.NET Framework 4.8.1 | 533320 |
Использование редактора реестра
- В меню «Пуск» выберите «Выполнить», введите regedit и нажмите «ОК. (Для запуска regedit необходимы учетные данные администратора.)
- В редакторе реестра откройте следующий подраздел: HKEY_LOCAL_MACHINESOFTWAREMicrosoftNET Framework SetupNDPv4Full. Если полный подраздел отсутствует, .NET Framework 4.5 или более поздней версии не установлена.
- Проверьте значение REG_DWORD под названием Release. Если присутствует, установлена .NET Framework 4.5 или более поздней версии. Это значение соответствует определенной версии .NET Framework. Например, на рисунке ниже значение параметра выпуска — 528040, что соответствует разделу выпуска .NET Framework 4.8.
Использование PowerShell для проверки минимальной версии
Используйте команды PowerShell, чтобы проверить значение записи Release в подразделе HKEY_LOCAL_MACHINESOFTWAREMicrosoftNET Framework SetupNDPv4Full.
В следующих примерах проверяется значение Release, чтобы определить, установлена ли версия .NET Framework 4.6.2 или более поздняя. Код возвращает True, если установлена одна из этих версий, и False в противном случае.
(Get-ItemPropertyValue -LiteralPath ‘HKLM:SOFTWAREMicrosoftNET Framework SetupNDPv4Full’ -Name Release) -ge 394802
Читайте также: Как узнать свою электронную почту
Отправка запросов в реестр с помощью кода
Используйте методы RegistryKey.OpenBaseKey и RegistryKey.OpenSubKey для доступа к подразделу HKEY_LOCAL_MACHINESOFTWAREMicrosoftNET Framework SetupNDPv4Full в реестре Windows.
Важно!
Если вы запускаете 32-разрядную программу в 64-разрядной версии Windows, пути реестра будут отличаться от перечисленных ранее. 64-разрядный реестр доступен в подразделе HKEY_LOCAL_MACHINESOFTWAREWow6432Node. Например, подраздел реестра для .NET Framework 4.5 — HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftNET Framework SetupNDPv4Full.
Проверьте значение выпуска REG_DWORD, чтобы определить, какая версия установлена. Чтобы обеспечить обратную совместимость, значение должно быть больше или равно значению, указанному в таблице версий .NET Framework.
В следующем примере проверяется значение записи Release в реестре, чтобы найти установленные версии .NET Framework 4.5–4.8.1.
Запрос реестра с помощью кода PowerShell
В следующем примере PowerShell используется для проверки значения записи Release в реестре и поиска установленных версий .NET Framework 4.5–4.8.1:
$release = Get-ItemPropertyValue -LiteralPath ‘HKLM:SOFTWAREMicrosoftNET Framework SetupNDPv4Full’ -Switch для выпуска name ($release) { { $_ -ge 533320 } { $version = ‘4.8.1 или позже’; перерыв } { $_ -ge 528040 } { $version = ‘4.8’; перерыв } { $_ -ge 461808 } { $version = ‘4.7.2’; перерыв } { $_ -ge 461308 } { $version = ‘4.7.1’; перерыв } { $_ -ge 460798 } { $version = ‘4.7’; перерыв } { $_ -ge 394802 } { $version = ‘4.6.2’; перерыв } { $_ -ge 394254 } { $version = ‘4.6.1’; перерыв } { $_ -ge 393295 } { $version = ‘4.6’; перерыв } { $_ -ge 379893 } { $version = ‘4.5.2’; перерыв } { $_ -ge 378675 } { $version = ‘4.5.1’; перерыв } { $_ -ge 378389 } { $version = ‘4.5’; перерыв} по умолчанию {$version = $null; Break } } if ($version) { Write-Host -Object «Версия .NET Framework: $version» } else { Write-Host -Object ‘.NET Framework версии 4.5 или более поздней не обнаружена.’
}
В этом примере используются рекомендации по контролю версий:
- Проверяет, имеет ли параметр выпуска значение, большее или равное значению известных частей выпуска.
- Проверка производится от последней к самой ранней версии.
Как узнать версию .NET Framework с помощью PowerShell?
Вы можете получить информацию об установленных версиях и выпусках .NET Framework на вашем компьютере с помощью PowerShell. Самый простой способ получить эти данные непосредственно из реестра — использовать командлеты Get-ChildItem и Get-ItemProperty (подробнее о работе с записями реестра узнайте из PowerShell).
Чтобы отобразить таблицу всех версий .Net Framework на вашем компьютере, выполните команду:
Get-ChildItem ‘HKLM:SOFTWAREMicrosoftNET Framework SetupNDP’ -Recurse | Get-ItemProperty -NameVersion -EA 0 | Где { $_.PSChildName -Match ‘^(?!S)p{L}’} | Выберите PSChildName, версию
На этом компьютере установлены .Net версий 2.0, 3.0, 3.5 и 4.7.
Начиная с .Net v4.0, более новая версия платформы перезаписывает (заменяет) старую версию. Если на вашем компьютере была установлена .NET Framework 4.7, старая версия исчезнет при установке .NET Framework 4.8.
Вы можете показать только номер выпуска (для версий .Net 4.x):
(Get-ItemProperty ‘HKLM:SOFTWAREMicrosoftNET Framework SetupNDPv4Full’ -Name Release
Согласно таблице номер 528449 соответствует версии .Net Framework 4.8 в Windows 11.
Обнаружение .NET Framework с 1.0 по 4.0
Каждая версия .NET Framework от 1.1 до 4.0 указана в виде подраздела в HKEY_LOCAL_MACHINESOFTWAREMicrosoftNET Framework SetupNDP. В следующей таблице перечислены пути для каждой версии .NET Framework. Для большинства версий значение установки REG_DWORD равно 1, что указывает на то, что версия установлена. Эти подразделы также имеют значение версии REG_SZ, содержащее строку версии.
Примечание
NET Framework Setup в пути реестра не начинается с точки.
1.0 | HKLMПрограммное обеспечениеMicrosoft. NETFrameworkPolicyv1.03705 | REG_SZ Установка соответствует 1 |
1.1 | HKLMSoftwareMicrosoftNET Framework SetupNDPv1.1.4322 | REG_DWORD Установка равна 1 |
2.0 | HKLMSoftwareMicrosoftNET Framework SetupNDPv2.0.50727 | REG_DWORD Установка равна 1 |
3.0 | HKLMSoftwareMicrosoftNET Framework SetupNDPv3.0Setup | Значение REG_DWORD InstallSuccess равно 1 |
3,5 | HKLMSoftwareMicrosoftNET Framework SetupNDPv3.5 | REG_DWORD Установка равна 1 |
Профиль клиента 4.0 | HKLMSoftwareMicrosoftNET Framework SetupNDPv4Client | REG_DWORD Установка равна 1 |
Полный профиль 4.0 | HKLMSoftwareMicrosoftNET Framework SetupNDPv4Full | REG_DWORD Установка равна 1 |
Важно!
Если вы запускаете 32-разрядную программу в 64-разрядной версии Windows, пути реестра будут отличаться от перечисленных ранее. 64-разрядный реестр доступен в подразделе HKEY_LOCAL_MACHINESOFTWAREWow6432Node. Например, подраздел реестра для .NET Framework 3.5 — HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftNET Framework SetupNDPv3.5.
Обратите внимание, что путь реестра подраздела .NET Framework 1.0 отличается от других.
Использование редактора реестра (более ранние версии платформы)
В меню «Пуск» выберите «Выполнить», введите regedit и нажмите «ОК.
Для запуска regedit необходимы учетные данные администратора.
откройте подраздел, соответствующий версии, которую вы хотите проверить. Используйте таблицу в разделе «Обнаружение .NET Framework 1.0–4.0.
На следующем изображении показан подраздел версии .NET Framework 3.5 вместе со значением версии.
Запрос реестра с помощью кода (более ранние версии платформы)
Используйте класс Microsoft.Win32.RegistryKey для доступа к подразделу HKEY_LOCAL_MACHINESOFTWAREMicrosoftNET Framework SetupNDP в реестре Windows.
Важно!
Если вы запускаете 32-разрядную программу в 64-разрядной версии Windows, пути реестра будут отличаться от перечисленных ранее. 64-разрядный реестр доступен в подразделе HKEY_LOCAL_MACHINESOFTWAREWow6432Node. Например, подраздел реестра для .NET Framework 3.5 — HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftNET Framework SetupNDPv3.5.
В следующем примере проверяется наличие установленных версий .NET Framework с 1 по 4:
// Открытие раздела реестра для использования записи .NET Framework (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32). OpenSubKey(@»SOFTWAREMicrosoftNET Framework SetupNDP»)) { foreach (var versionKeyName i ndpKey.GetSub) { Пропустить информацию о версии .NET Framework 4.5 if (versionKeyName == «v4») { continue; } if (versionKeyName.StartsWith(«v»)) { RegistryKey versionKey = ndpKey.OpenSubKey(versionKeyName); // Получаем значение версии .NET Framework var name = (string)versionKey.GetValue(«Version», «»); // Получаем номер пакета обновления (SP) var sp = versionKey.GetValue(«SP», «»).ToString(); // Получаем флаг установки var install = versionKey.GetValue(«Installer», «»).ToString(); if (string.IsNullOrEmpty(install)) { // Нет информации об установке; он должен быть в подразделе. Console.WriteLine($»{versionKeyName} {name}»); } else if (install == «1») { // Install = 1 означает, что версия установлена if (!string.IsNullOrEmpty(sp)) { Console.WriteLine($»{versionKeyName} {name} SP{sp}»); } else { Console.WriteLine($»{versionKeyName} {name}»); } } if (!string.IsNullOrEmpty(name)) {продолжить; } // выводим информацию из подразделов… // Перебираем подразделы подраздела версии foreach (var subKeyName in versionKey.GetSubKeyNames()) { RegistryKey subKey = versionKey.OpenSubKey(subKeyName); name = (string)subKey.GetValue(«Версия», «»); if (!string.IsNullOrEmpty(name)) sp = subKey.GetValue(«SP», «»).ToString(); install = subKey.GetValue(«Install», «»).ToString(); if (string.IsNullOrEmpty(install)) { // Нет информации об установке; это должно быть позже. Console.WriteLine($» {versionKeyName} {name}»); } else if (install == «1») { if (!string.IsNullOrEmpty(sp)) { Console.WriteLine($» {subKeyName} {name} SP{sp}»); } else { Console.WriteLine($» {subKeyName} {name}»); } } } } } } ‘ Открывает раздел реестра для записи .NET Framework. Использование ndpKey в качестве RegistryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32). OpenSubKey(«SOFTWAREMicrosoftNET Framework SetupNDP») Для каждого VersionKeyName в ndpKey.GetSubKeyNames() ‘ Пропустить .NET Framework 4.5 и более поздние версии. If versionKeyName = «v4» Тогда продолжайте For If versionKeyName.StartsWith(«v») then Dim versionKey As RegistryKey = ndpKey.OpenSubKey(versionKeyName) ‘ Получите значение версии .NET Framework. Dim name = DirectCast(versionKey.GetValue(«Version», «»), String) ‘ Получаем номер пакета обновления (SP). Dim sp = versionKey.GetValue(«SP», «»).ToString() Dim install = versionKey.GetValue(«Install», «»).ToString() If String.IsNullOrEmpty(install) Тогда ‘ Нет информации об установке; он должен быть в подразделе. Console.WriteLine($»{versionKeyName} {name}») ElseIf install = «1» Тогда Если Не String.IsNullOrEmpty(sp) Тогда Console.WriteLine($»{versionKeyName} {name} SP{sp}») Else Console .WriteLine($»{versionKeyName} {name}») End If End If Not String.IsNullOrEmpty(name) then Continue For End If For Every subKeyName In versionKey.GetSubKeyNames() Dim subKey As RegistryKey = versionKey.OpenSubKey(subKeyName) name = DirectCast(subKey.GetValue(«Версия», «»), String) Если не String.IsNullOrEmpty(name) Тогда sp = subKey.GetValue(«SP», «»).ToString() End If install = subKey. GetValue («Install», «»).ToString() If String.IsNullOrEmpty(install) Тогда ‘ Нет информации об установке; это должно быть позже. Console.WriteLine($» {versionKeyName} {name}») ElseIf install = «1» Тогда Если Не String.IsNullOrEmpty(sp) Тогда Console.WriteLine($» {subKeyName} {name} SP{sp}») Else Console .WriteLine($» {subKeyName} {name}») End If End If Next End If Next End Использование
В этом примере будут показаны выходные данные, аналогичные следующему:
v2.0.50727 2.0.50727.4927 SP2 v3.0 3.0.30729.4926 SP2 v3.5 3.5.30729.4926 SP1 v4.0 Клиент 4.0.0.0
Проверить версию .Net Framework на удаленных компьютерах
Вы можете удаленно получить список версий .Net Framework, установленных на компьютерах в вашей сети, с помощью PowerShell.
Ниже приведен небольшой сценарий PowerShell, который извлекает список компьютеров из текстового файла и проверяет версию .Net Framework для всех из них. Для запуска команд на удаленных компьютерах используйте командлет WinRM Invoke-Command.
Функция GetNetFramework {
Get-ChildItem ‘HKLM:SOFTWAREMicrosoftNET Framework SetupNDP’ -recurse |
Get-ItemProperty -name Версия,Выпуск -EA 0 |
Где { $_.PSChildName -match ‘^(?!SW)p{L}’} |
Выберите PSChildName, Версия, Выпуск, @{
имя=»продукт»
выражение={
переключатель -regex($_.Release) {
«378389» { Версия»4.5″ }
«378675|378758″ { Версия»4.5.1» }
«379893» { Версия»4.5.2″ }
«393295|393297″ { Версия»4.6» }
«394254|394271″ { Версия»4.6.1» }
«394802|394806″ { Версия»4.6.2» }
«460798|460805″ { Версия»4.7» }
«461308|461310″ { Версия»4.7.1» }
«461808|461814″ { Версия»4.7.2» }
«528040|528049|528449|528372″ { Версия»4.8″ }
{$_ -gt 528449} { Версия»Недокументированная версия (> 4.8)» }
}
}
}
}
$результат=@()
$servers= Get-Content C:PSservers.txt
foreach ($server в $servers)
{
$result+=Invoke-Command -ComputerName $server -ScriptBlock $function:GetNetFramework
}
$результат| выберите PSComputerName,@{name = «.NET Framework»; выражение = {$_.PSChildName}},Продукт,Версия,Версия| Out-GridView
Скрипт отображает таблицу (через Out-GridView) со списком версий .Net Framework, установленных на удаленных компьютерах.
Вы также можете указать список компьютеров, на которых хотите проверить .NET, например:
$servers= @(«ПК1″,»ПК2″,»ПК3″,»ПК4″,»ПК5»)
Или выберите список компьютеров из домена с помощью командлета Get-ADComputer из модуля AD PowerShell. Следующая команда выберет все активные хосты Windows Server в домене:
$servers= Get-ADComputer -Filter ‘операционная система — например «*Windows server*» — и включена -eq «true»‘
Определение реализации и версии .NET, в которой работает приложение
Свойство RuntimeInformation.FrameworkDescription можно использовать для запроса реализации и версии запущенного приложения .NET. Если приложение работает в .NET Framework, выходные данные будут выглядеть примерно так:
.NET Framework 4.8.4250.0
Если приложение работает в .NET Core или .NET 5+, выходные данные будут выглядеть следующим образом:
.NET Core 3.1.9 .NET 5.0.0