VS.Net 2005    Empregos    VS.Net 2003    Internet


>>
Home

>>
Missao

>>
Eventos

>>
Artigos

>>
Livros

>>
Forum

>>
Galeria de Imagens

>>
Downloads

>>
Links Favoritos






Descubra qual a versão do .Net Framework roda na maquina

Enviado por em Monday, February 13, 2006 (EST)

Com algumas linhas de código e algumas chaves do registro do Windows é possivel saber qual (ou quais) versão do .Net Framework esta instalada na maquina. Voce pode baixar o projeto completo na seção de downloads.

Como identificar qual versão do .Net Framework está instalada.

 

Introdução

 

Navegando pelos diversos forums técnicos, percebi que é frequente a dúvida de como determinar qual versão do .Net Framework está rodando na máquina. Na verdade, eu também já precisei desse tipo de solução J

Como determinar as diversas versões?

 

Versões existentes

 

Agora que a versão 2.0 do .Net Framework acaba se ser liberada, temos 3 diferentes versões que podem estar coexistindo lado a lado numa mesma máquina. Veja que uma determinada versão pode ter também um ou mais service packs liberados para essa versão.

A tabela abaixo mostra isso com mais detalhes as versões do .Net Framework e do Visual Studio.

 

.Net Framework product version

Service pack level

Version

.Net Framework 1.0

Original release

1.0.3705.0 and 7.0.9466.0

.Net Framework 1.0

Service Pack 1

1.0.3705.209

.Net Framework 1.0

Service Pack 2

1.0.3705.288 and 7.0.9502.0

.Net Framework 1.0

Service Pack 3

1.0.3705.6018 and 7.0.9951.0

.NET Framework 1.1

Original release

1.1.4322.573 and 7.10.3052.4

.NET Framework 1.1

Service pack 1

1.1.4322.2032 and 7.10.6001.4

.NET Framework 2.0

Beta 1

2.0.40607.16 and 8.0.40607.16

.NET Framework 2.0

Beta 2

2.0.50215.44 and 8.0.50215.44

.NET Framework 2.0

Original release

2.0.50727.42

 

A maneira mais simples de determinar a versão instalada no computador é localizar o diretório %systemroot%\Microsoft.Net\Framework. Você pode colar o nome do caminho do diretório na barra de endereços do Windows Explorer para localizar o diretório do framework. Você então de verá encontrar os seguintes releases:

 

  • V1.0.3705
  • V1.1.4322
  • V2.0.50727

 

Caso você encontre outros diretórios que tenham o formato vN.N.NXXXX que não estejam nessa lista acima, podem ser versões beta ou pré-releases do .Net Framework. Uma vez encontrado o diretório, siga as seguintes etapas:

 

  1. Abra qualquer um dos diretórios da lista acima e localize o arquivo mscorlib.dll.
  2. Clique com o mouse direito sobre o arquivo e então clique em Propriedades.
  3. Clique na orelha Versões e veja a versão do arquivo.
  4. Compare com a lista para ver qual versão esta instalada no computador. Clique em OK.

 

Note que não é aconselhável a versão do arquivo na tabela acima para determinar o nível do service pack instalado. Se você estiver interessado em uma solução mais precisa sobre qual versão do .Net Framework está instalada e os correspondentes service packs, de uma olhada nas sugestões a seguir.

 

Determinando a versão via código

 

Para aqueles que precisam fazer essa verificação numa aplicação, via código, seguem a seguir algumas dicas e trechos de código de como proceder.

 

Se você deseja utilizar essa verificação em código não gerenciado, uma boa dica é o código postado no blog de Aaron Stebner.

Para aqueles que quiserem utilizar código gerenciado, seguem os comentários sobre um componente CheckVersion que implementei em C# e que utilizo em alguns projetos. As mais recentes atualizações foram para compatibilizá-lo com a versão 2.0 do Framework. O código pode ser facilmente convertido para VB.Net para aqueles que estiverem interessados.

Como o projeto foi criado usando o VS.Net 2005, para rodar você pode usar o Visual C# Express ou adicionar a classe a um projeto do VS 2003 e rodar sem problemas.

Esse foi o resultado que obtive após rodar o programa na minha maquina.

 

 
Veja na seção de downloads o projeto completo de toda a aplicação.

 

Comentando a classe CheckVersion

 

A base do funcionamento do componente é a verificação de várias chaves no registro do Windows.

Usando informações existentes no MSDN, foi possível determinar quais chaves do registro devem ser lidas.

 

.Net Framework

Register Key

Link in MSDN

1.0

HKLM\SOFTWARE\Microsoft\.NETFramework\policy\v1.0

Redistributing .Net Framework

1.1

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v1.1.4322

.Net Framework 1.1 Deployment Guide

2.0

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727

Redistributing .Net Framework

 

 

Verificando se a versao vX.X está instalada

 

Para exemplificar, vejamos como identificar a instalação da versão 1.1.

Definindo os caminhos para os nomes das chaves a serem verificadas e quais os valores contidos nessas chaves que nos interessam, fica fácil determinar a versão desejada.

 

 

private const string Net11KeyName = "Software\\Microsoft\\NET Framework Setup\\NDP\\v1.1.4322";

 

 

O exemplo acima define o nome da chave de acesso para saber se o Framework 1.1 foi instalado na maquina. Veja que alem do nome da chave é necessário saber qual o nome da sub-chave e o conteúdo que interessa nessa sub-chave.

 

 

public bool IsFramework11Installed()

{

                // check if installed

                if (ReadReg(Net11KeyName, NetRegValueName) == "1")

                                return true;

                else

                                return false;

}

 

 

Veja que no trecho de código é feita a verificação da existência da chave e, caso seu conteudo seja “1”, pode-se concluir que o Framework 1.1 está instalado na maquina em questão. O mesmo procedimento é utilizado para as demais versões do framework.

 

Recuperando o valor da versão vX.X

 

O método para determinar o valor da versão instalada também é bastante simples. Para dar maior consistência, antes de recuperar o valor da versão, o método faz uma checagem para ver se a versão desejada está instalada na maquina.

 

 

public string GetFramework11Version()

{

                string version = string.Empty;

               

                if (IsFramework11Installed())

                {

                                // get the installed version

                                version = ReadReg(Net11KeyVersion, Net11KeyVersionName);

                                if (!version.Equals("") && version.Contains(Net11KeyVersionName))

                                                version = string.Concat("1.1.", Net11KeyVersionName);

                }

                return version;

}

 

 

 

Após checar se a versão está instalada, o método utiliza a chave definida em Net11KeyVersion e recupera seu valor. 

 

 

private const string Net11KeyVersion = "Software\\Microsoft\\.NETFramework\\Policy\\v1.1";

 

 

O projeto contem o código fonte da classe CheckVersion e também um projeto teste para testar o componente.

O projeto pode ser executado no Visual Studio 2003 ou 2005. Veja que como o projeto foi gerado na versão 2005, se você for utilizar a versão 2003, terá que converter os arquivos sln e csproj já que a estrutura desses arquivos não é compatível com a versão 2003. Uma outra maneira de fazer isso é criar um projeto novo no 2003 e apenas adicionar o arquivo CheckVersion.cs no seu projeto.

 

Pontos de interesse

 

Utilizando essa mesma idéia, você pode checar e/ou recuperar outras informações sobre o framework como diretório instalado, idioma, etc e também informações sobre o Visual Studio.

Se puder, gaste algum tempo navegando pelas varias chaves relativas ao .Net Framework e verá que existem várias informações interessantes armazenadas no registro o que vai facilitar sua vida da próxima vez que precisas delas.

 

Autor: Carlos R. Lacerda

13-Fev-2006

 

 

 


Adicione seu Comentario



Award Customer Excellence VS.Net 2005

Artigos Mais Populares
  • Instalando o Windows Vista
    O Windows Vista vem ai. Como ficam questões como instalação e compatibilidade com o hardware?

  • Usando Interfaces no .Net
    Porque as interfaces são pouco usadas pelos desenvolvedores? O artigo não se propõe a responder essa pergunta, mas aborda alguns pontos que podem fazer parte da resposta.

  • Descubra qual a versão do .Net Framework roda na maquina
    Com algumas linhas de código e algumas chaves do registro do Windows é possivel saber qual (ou quais) versão do .Net Framework esta instalada na maquina. Voce pode baixar o projeto completo na seção de downloads.

  •  

    Links mais Populares 
  • Download do .NET Framework
    O Microsoft® .NET Framework é um componente integral do Windows para construir e executar a proxima geração de aplicações e os XML Web services. Prove uma alta produtividade, baseado em padrões, aplicações empresariais, ambiente multi-linguas que simplifica o desenvolvimento de aplicações

  • ASP.NET
    Esse é um ótimo site onde voce encontra artigos, códigos e componentes free para usar nas suas aplicações ASP.NET.

  • Treinamento ASP.NET
    Aprenda como construir Web sites dinamicos utilizando o Visual Studio .NET.

  •  

    Novos Artigos
  • Como acessar um hardware remoto
    Usando WMI para acessar uma maquina remota

  • Construa um browser em poucos minutos (revisado)
    Veja como fazer um browser usando as novas funcionalidades do Visual Studio 2005. (Pegue o fonte completo na area de downloads)

  • Instalando o Windows Vista
    O Windows Vista vem ai. Como ficam questões como instalação e compatibilidade com o hardware?




  • Last Refreshed 5/16/2008 12:23:50 AM

    XML.com
    XML.com features a rich mix of information and services for the XML community.
  • Under the Hood: Oracle Berkeley DB XML
    XML Databases, coupled with the power of XQuery, offer a potentially paradigm-changing way of dealing with data. The Oracle Berkeley DB XML database provides a rich XQuery-based engine that can be manipulated via XQuery, opening up possibilities for any web developer.

  • Introducing E4X
    Kurt Cagle introduces us to E4X, an XML library for JavaScript, and argues that XML and JSON are both indispensable parts of the web app developer's toolkit.

  • Data Sources as Web Services
    Kyle Gabhart describes WS02's Data Services, a new feature in WS02 that allows for rapid creation of web services wrapping relational, Excel, CSV, and JNDI data sources quickly and easily.

  • XForms Thick Clients
    Jack Cox explains an approach to building XForms client applications that work in a disconnected environment.

  • jQuery and XML
    Uche Ogbuji returns with a new Agile Web column to explain how to use jQuery to process XML in JavaScript web applications.


    Copyright 2004, O'Reilly Media, Inc. Last Refreshed 5/16/2008 12:23:51 AM
  • Home   |  Missao   |  Eventos   |  Artigos   |  Livros   |  Forum   |  Galeria de Imagens   |  Downloads   |  Links Favoritos