O registro é a maneira oficial de detectar se uma versão específica do Framework está instalada.
Quais chaves de registro são necessárias mudam dependendo da versão do Framework que você está procurando:
Chave do Registro da Versão do Framework
-------------------------------------------------- ----------------------------------------
1.0 HKLM \ Software \ Microsoft \ .NETFramework \ Policy \ v1.0 \ 3705
1.1 Instalação do HKLM \ Software \ Microsoft \ NET Framework \ 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 Instalação \ NDP \ v3.0 \ Setup \ InstallSuccess
3.5 Instalação do HKLM \ Software \ Microsoft \ NET Framework \ NDP \ v3.5 \ Install
4.0 Configuração do perfil do cliente HKLM \ Software \ Microsoft \ NET \ NDP \ v4 \ Client \ Install
4.0 Perfil completo HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v4 \ Full \ Install
Geralmente você está procurando:
"Install"=dword:00000001
exceto o .NET 1.0, onde o valor é uma string ( REG_SZ
) em vez de um número ( REG_DWORD
).
A determinação do nível do service pack segue um padrão semelhante:
Chave do Registro da Versão do Framework
-------------------------------------------------- ----------------------------------------
1.0 HKLM \ Software \ Microsoft \ Configuração ativa \ Componentes instalados \ {78705f0d-e8db-4b2d-8193-982bdda15ecd} \ Version
1.0 [1] HKLM \ Software \ Microsoft \ Instalação ativa \ Componentes instalados \ {FDC11A6F-17D1-48f9-9EA3-9051954BAA24} \ Version
1.1 Instalação do HKLM \ Software \ Microsoft \ NET Framework \ 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 Instalação do HKLM \ Software \ Microsoft \ NET Framework \ NDP \ v3.5 \ SP
4.0 Configuração do perfil do cliente HKLM \ Software \ Microsoft \ NET \ NDP \ v4 \ Client \ Servicing
4.0 Perfil completo HKLM \ Software \ Microsoft \ NET Framework Instalação \ NDP \ v4 \ Full \ Servicing
[1] Windows Media Center ou Windows XP Tablet Edition
Como você pode ver, a determinação do nível de SP do .NET 1.0 é alterada se você estiver executando o Windows Media Center ou o Windows XP Tablet Edition. Novamente, o .NET 1.0 usa um valor de seqüência de caracteres, enquanto todos os outros usam um DWORD.
Para o .NET 1.0, o valor da sequência em uma dessas chaves tem o formato de #, #, ####, #. O último # é o nível do Service Pack.
Embora eu não tenha solicitado isso explicitamente, se você quiser saber o número exato da versão do Framework, use estas chaves do Registro:
Chave do Registro da Versão do Framework
-------------------------------------------------- ----------------------------------------
1.0 HKLM \ Software \ Microsoft \ Configuração ativa \ Componentes instalados \ {78705f0d-e8db-4b2d-8193-982bdda15ecd} \ Version
1.0 [1] HKLM \ Software \ Microsoft \ Instalação ativa \ Componentes instalados \ {FDC11A6F-17D1-48f9-9EA3-9051954BAA24} \ Version
1.1 Instalação do HKLM \ Software \ Microsoft \ NET Framework \ 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 Configuração do perfil do cliente HKLM \ Software \ Microsoft \ NET \ NDP \ v4 \ Version
4.0 Perfil completo HKLM \ Software \ Microsoft \ NET Framework Instalação \ NDP \ v4 \ Version
[1] Windows Media Center ou Windows XP Tablet Edition
[2] .NET 2.0 SP1
[3] Versão original do .NET 2.0 (RTM)
Novamente, o .NET 1.0 usa um valor de seqüência de caracteres, enquanto todos os outros usam um DWORD.
Notas Adicionais
para .NET 1.0, o valor da sequência em uma dessas chaves tem um formato de #,#,####,#
. A #,#,####
parte da string é a versão do Framework.
para o .NET 1.1, usamos o nome da chave do registro, que representa o número da versão.
Por fim, se você observar as dependências, o .NET 3.0 adiciona funcionalidade adicional ao .NET 2.0, para que o .NET 2.0 e o .NET 3.0 precisem ser avaliados como instalados para dizer corretamente que o .NET 3.0 está instalado. Da mesma forma, o .NET 3.5 adiciona funcionalidade adicional ao .NET 2.0 e .NET 3.0, portanto, o .NET 2.0, .NET 3.0 e .NET 3. devem avaliar a instalação para dizer corretamente que o .NET 3.5 está instalado.
O .NET 4.0 instala uma nova versão do CLR (CLR versão 4.0) que pode ser executada lado a lado com o CLR 2.0.
Atualização para .NET 4.5
Não haverá uma v4.5
chave no registro se o .NET 4.5 estiver instalado. Em vez disso, você deve verificar se a HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full
chave contém um valor chamado Release
. Se esse valor estiver presente, o .NET 4.5 está instalado, caso contrário, não está. Mais detalhes podem ser encontrados aqui e aqui .