Uma pergunta semelhante foi feita aqui , mas era específica ao .NET 3.5. Especificamente, estou procurando o seguinte:
- Qual é a maneira correta de determinar quais versões e service packs do .NET Framework estão instalados?
- Existe uma lista de chaves do Registro que podem ser usadas?
- Existe alguma dependência entre as versões do Framework?
.net
installation
version-detection
Scott Dorman
fonte
fonte
Respostas:
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:
Geralmente você está procurando:
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:
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:
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 aHKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full
chave contém um valor chamadoRelease
. 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 .fonte
Há uma resposta oficial da Microsoft para esta pergunta no seguinte artigo da base de conhecimento:
ID do artigo 318785 - Última revisão: 7 de novembro de 2008 - Revisão: 20.1 Como determinar quais versões do .NET Framework estão instaladas e se os service packs foram aplicados
Infelizmente, parece não funcionar, porque a versão mscorlib.dll no diretório 2.0 possui uma versão 2.0 e não há nenhuma versão mscorlib.dll nos diretórios 3.0 ou 3.5, mesmo que o 3.5 SP1 esteja instalado ... por que a resposta oficial da Microsoft seria tão desinformada?
fonte
O Framework 4 beta é instalado em uma chave do Registro diferente.
fonte
Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP", true)
paraRegistry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP")
para evitar uma exceção de segurança em usuários não administradores.Eu queria detectar a presença do .NET versão 4.5.2 instalada no meu sistema e não encontrei uma solução melhor do que o ASoft .NET Version Detector .
Instantâneo desta ferramenta mostrando diferentes versões do .NET:
fonte
Enumere as subchaves de
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP
. Cada subchave é uma versão do .NET . Ele deve terInstall=1
valor se estiver presente na máquina, um valor de SP que mostra o service pack e umMSI=1
valor se foi instalado usando um MSI. (O .NET 2.0 no Windows Vista não possui o último, por exemplo, pois faz parte do sistema operacional.)fonte
Para um sistema operacional de 64 bits, o caminho seria:
fonte
Wow6432Node
chave do registro faz parte do refletor do registro WOW64, que reflete determinadas chaves e valores entre as visualizações de registro de 64 e 32 bits. Não deve haver necessidade de acessar essa chave diretamente, pois o registro manipula automaticamente o redirecionamento e o espelhamento.Atualização para .NET 4.5.1
Agora que o .NET 4.5.1 está disponível, o valor real da chave denominada Release no registro precisa ser verificado, não apenas sua existência. Um valor de 378758 significa que o .NET Framework 4.5.1 está instalado. No entanto, conforme descrito aqui, esse valor é 378675 no Windows 8.1.
fonte
Existe uma ferramenta GUI disponível, o ASoft .NET Version Detector , que sempre se mostrou altamente confiável. Ele pode criar arquivos XML especificando o nome do arquivo da saída XML na linha de comandos.
Você pode usar isso para automação. É um pequeno programa, escrito em uma linguagem não dependente do .NET e não requer instalação.
fonte
Eu estava precisando descobrir qual versão do .NET framework eu tinha no meu computador e tudo o que fiz foi ir ao painel de controle e selecionar a opção "Desinstalar um programa". Depois disso, classifiquei os programas por nome e encontrei o Microsoft .NET Framework 4 Client Profile.
fonte
Aqui está um script do PowerShell para obter versões instaladas do .NET Framework
Foi escrito com base em Como: Determinar quais versões do .NET Framework estão instaladas . Por favor, use a função Get-FrameworkVersion () para obter informações sobre as versões instaladas do .NET Framework.
fonte
Usando a biblioteca Signum.Utilities do SignumFramework (que você pode usar autônomo), você pode obtê-lo de maneira agradável e sem precisar lidar com o registro:
fonte
Consulte Como determinar quais versões do .NET Framework estão instaladas (MSDN).
O MSDN propõe um exemplo de função que parece fazer o trabalho para a versão 1-4. De acordo com o artigo, a saída do método é:
Observe que para "versões 4.5 e posteriores" há outra função.
fonte
No Windows 7 (também deve funcionar no Windows 8, mas ainda não o testei):
Vá para um prompt de comando
Etapas para ir para um prompt de comando:
No cmd, digite este comando
Isso fornece a versão mais recente do NET Framework instalada.
Pode-se também experimentar o Raymond.cc Utilities pelo mesmo.
fonte
cmd
me dáERROR: Description = Invalid namespace
.ERROR: Description = Invalid namespace