Реестр - это официальный способ , чтобы определить, установлена ли конкретная версия Framework.
Какие разделы реестра необходимы, меняются в зависимости от версии Framework, которую вы ищете:
Framework Version Registry Key
------------------------------------------------------------------------------------------
1.0 HKLM\Software\Microsoft\.NETFramework\Policy\v1.0\3705
1.1 HKLM\Software\Microsoft\NET Framework Setup\NDP\v1.1.4322\Install
2.0 HKLM\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\Install
3.0 HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup\InstallSuccess
3.5 HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5\Install
4.0 Client Profile HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Client\Install
4.0 Full Profile HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full\Install
Как правило, вы ищете:
"Install"=dword:00000001
за исключением .NET 1.0, где значением является строка (REG_SZ
), а не число (REG_DWORD
).
Определение уровня пакета обновления происходит по аналогичной схеме:
Framework Version Registry Key
------------------------------------------------------------------------------------------
1.0 HKLM\Software\Microsoft\Active Setup\Installed Components\{78705f0d-e8db-4b2d-8193-982bdda15ecd}\Version
1.0[1] HKLM\Software\Microsoft\Active Setup\Installed Components\{FDC11A6F-17D1-48f9-9EA3-9051954BAA24}\Version
1.1 HKLM\Software\Microsoft\NET Framework Setup\NDP\v1.1.4322\SP
2.0 HKLM\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\SP
3.0 HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.0\SP
3.5 HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5\SP
4.0 Client Profile HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Client\Servicing
4.0 Full Profile HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full\Servicing
[1] Windows Media Center or Windows XP Tablet Edition
Как видите, определение уровня SP для .NET 1.0 изменяется, если вы работаете в Windows Media Center или Windows XP Tablet Edition. Опять же, .NET 1.0 использует строковое значение, в то время как все остальные используют DWORD.
Для .NET 1.0 строковое значение в любом из этих ключей имеет формат #, #, ####, #. Последний # - это уровень пакета обновления.
Хотя я явно не просил об этом, если вы хотите узнать точный номер версии Framework, вы бы использовали следующие ключи реестра:
Framework Version Registry Key
------------------------------------------------------------------------------------------
1.0 HKLM\Software\Microsoft\Active Setup\Installed Components\{78705f0d-e8db-4b2d-8193-982bdda15ecd}\Version
1.0[1] HKLM\Software\Microsoft\Active Setup\Installed Components\{FDC11A6F-17D1-48f9-9EA3-9051954BAA24}\Version
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\Software\Microsoft\NET Framework Setup\NDP\v3.5\Version
4.0 Client Profile HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Version
4.0 Full Profile HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Version
[1] Windows Media Center or 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 version 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, в противном случае это не так. Более подробную информацию можно найти здесь и здесь .