Реестр является официальным способом определить, установлена ли конкретная версия Framework.
Какие разделы реестра необходимы, меняются в зависимости от версии Framework, которую вы ищете:
Раздел реестра версии Framework
-------------------------------------------------- ----------------------------------------
1.0 HKLM \ Software \ Microsoft \ .NETFramework \ Policy \ v1.0 \ 3705
1.1 HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v1.1.4322 \ Установить
2.0 HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v2.0.50727 \ Установить
3.0 HKLM \ Программное обеспечение \ Microsoft \ NET Framework Setup \ NDP \ v3.0 \ Setup \ InstallSuccess
3.5 HKLM \ Программное обеспечение \ Microsoft \ NET Framework Setup \ NDP \ v3.5 \ Install
4.0 Профиль клиента HKLM \ Программное обеспечение \ Microsoft \ NET Framework Setup \ NDP \ v4 \ Client \ Install
4.0 Полный профиль HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v4 \ Full \ Install
Как правило, вы ищете:
"Install"=dword:00000001
за исключением .NET 1.0, где значением является строка ( REG_SZ
), а не число ( REG_DWORD
).
Определение уровня пакета обновления происходит по аналогичной схеме:
Раздел реестра версии Framework
-------------------------------------------------- ----------------------------------------
1.0 HKLM \ Software \ Microsoft \ Active Setup \ Установленные компоненты \ {78705f0d-e8db-4b2d-8193-982bdda15ecd} \ Version
1.0 [1] HKLM \ Software \ Microsoft \ Active Setup \ Установленные компоненты \ {FDC11A6F-17D1-48f9-9EA3-9051954BAA24} \ Версия
1.1 HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v1.1.4322 \ SP
2.0 HKLM \ Программное обеспечение \ Microsoft \ NET Framework Setup \ NDP \ v2.0.50727 \ SP
3.0 HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v3.0 \ SP
3.5 HKLM \ Программное обеспечение \ Microsoft \ NET Framework Setup \ NDP \ v3.5 \ SP
4.0 Профиль клиента HKLM \ Программное обеспечение \ Microsoft \ NET Framework Setup \ NDP \ v4 \ Client \ Servicing
4.0 Полный профиль HKLM \ Программное обеспечение \ Microsoft \ NET Framework Setup \ NDP \ v4 \ Full \ Servicing
[1] Windows Media Center или Windows XP Tablet Edition
Как видите, определение уровня SP для .NET 1.0 изменяется, если вы работаете в Windows Media Center или Windows XP Tablet Edition. Опять же, .NET 1.0 использует строковое значение, в то время как все остальные используют DWORD.
Для .NET 1.0 строковое значение в любом из этих ключей имеет формат #, #, ####, #. Последний # - это уровень пакета обновления.
Хотя я явно не просил об этом, если вы хотите узнать точный номер версии Framework, вы бы использовали следующие ключи реестра:
Раздел реестра версии Framework
-------------------------------------------------- ----------------------------------------
1.0 HKLM \ Software \ Microsoft \ Active Setup \ Установленные компоненты \ {78705f0d-e8db-4b2d-8193-982bdda15ecd} \ Version
1.0 [1] HKLM \ Software \ Microsoft \ Active Setup \ Установленные компоненты \ {FDC11A6F-17D1-48f9-9EA3-9051954BAA24} \ Версия
1.1 HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v1.1.4322
2.0 [2] HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v2.0.50727 \ Version
2.0 [3] HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v2.0.50727 \ Increment
3.0 HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v3.0 \ Version
3.5 HKLM \ Программное обеспечение \ Microsoft \ NET Framework Setup \ NDP \ v3.5 \ Version
4.0 Профиль клиента HKLM \ Программное обеспечение \ Microsoft \ NET Framework Setup \ NDP \ v4 \ Version
4.0 Полный профиль HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v4 \ Version
[1] Windows Media Center или Windows XP Tablet Edition
[2] .NET 2.0 SP1
[3] .NET 2.0 Original Release (RTM)
Опять же, .NET 1.0 использует строковое значение, в то время как все остальные используют DWORD.
Дополнительные замечания
для .NET 1.0 строковое значение в любом из этих ключей имеет формат #,#,####,#
. #,#,####
Часть строки является Framework версии.
для .NET 1.1 мы используем имя самого раздела реестра, который представляет номер версии.
Наконец, если вы посмотрите на зависимости, .NET 3.0 добавляет дополнительные функции в .NET 2.0, поэтому и .NET 2.0, и .NET 3.0 должны быть оценены как установленные, чтобы правильно сказать, что .NET 3.0 установлен. Аналогично, .NET 3.5 добавляет дополнительные функциональные возможности в .NET 2.0 и .NET 3.0, поэтому .NET 2.0, .NET 3.0 и .NET 3. все должны оценить, что установлены, чтобы правильно сказать, что .NET 3.5 установлен.
.NET 4.0 устанавливает новую версию CLR (CLR версии 4.0), которая может работать параллельно с CLR 2.0.
Обновление для .NET 4.5
В v4.5
реестре не будет ключа, если установлен .NET 4.5. Вместо этого вы должны проверить, HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full
содержит ли ключ значение с именем Release
. Если это значение присутствует, устанавливается .NET 4.5, в противном случае это не так. Более подробную информацию можно найти здесь и здесь .