ID do artigo: 307394 - Última revisão: quarta-feira, 18 de janeiro de 2006 - Revisão: 1.5

Como determinar a versão do Windows usando o Visual C++

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Recolher tudo

Sumário

Este artigo demonstra como determinar qual sistema operacional está em uso no sistema onde seu aplicativo está sendo executado. Ele faz distinção entre o Windows 95, Windows 98, Windows Millennium Edition, Windows NT 3.51, Windows NT 4.0, Windows 2000 e Windows XP.

Requisitos

Este artigo presume que você tenha uma compreensão de nível intermediário de programação C++.

Dados de versão do Windows

Para determinar o sistema operacional que está sendo executado em um determinado sistema, é necessário os seguintes dados:

Recolher esta tabelaExpandir esta tabela
O Windows 95Windows 98Windows MEWindows NT 4Windows 2000Windows XP
PlatformID 1 1 1 2 2 2
Versão principal 4 4 4 4 5 5
Versão secundária 0 10 90 0 0 1

Observação: Embora o código neste artigo verificar se todas as versões 32 bits do Windows, nem o .NET Framework como Visual Studio .NET há suporte para Windows 95 ou Windows NT 3.51.

Obter as informações de Brazilian OS

Criar um ponteiro para uma classe de sistema operacional e atribua as informações atuais do sistema operacional a ele:
System::OperatingSystem *osInfo = System::Environment::OSVersion;
				

Determinar a identificação de plataforma

A primeira etapa na avaliação lógica das informações do sistema operacional é para determinar qual plataforma está em uso, como mostrado abaixo. Isso é feito usando PlatformID . PlatformID é uma propriedade da classe de sistema operacional . Um valor enumerado "Win32Windows" significa que um sistema operacional da família de produtos x Windows 9. "WinNT" indica um sistema operacional da família Windows NT.
switch(osInfo->Platform)
    {
        case System::PlatformID::Win32Windows:         
            {
             //code to determine specific Windows 9x version
            }

       case System::PlatformID::Win32NT:
           {
              //code to determine specific Windows NT version
           }
       
     }
				

Determinar específicos Windows 9 x versão

Se a plataforma tiver sido determinada como Windows 9 x , a versão principal ou secundária pode ser analisada para determinar a versão específica, como demonstra o código a seguir.
//platform is win9x
case System::PlatformID::Win32Windows:
     
switch (osInfo->Version->Minor)
    {
        case 0:
            Console::WriteLine ("Windows 95");
            break;
        case 10:
            if(osInfo->Version->Revision.ToString()=="2222A")
                Console::WriteLine("Windows 98 Second Edition");
            else
                 Console::WriteLine("Windows 98");
                 break;
        case  90:
                 Console::WriteLine("Windows ME");
                 break;
     }break;
     

				

Determinar a versão específica do Windows NT

Se a plataforma tiver sido determinada como o Windows NT, a versão principal ou secundária pode ser analisada para determinar a versão específica:
//platform is NT
case System::PlatformID::Win32NT:

switch(osInfo->Version->Major)
    {
        case 3:
            Console::WriteLine("Windows NT 3.51");
            break;
        case 4:
            Console::WriteLine("Windows NT 4.0");
            break;
        case 5:
            if (osInfo->Version->Minor==0) 
                Console::WriteLine("Windows 2000");
            else
                Console::WriteLine("Windows XP");
                break;
     }break;
				

O exemplo de criação

As etapas a seguintes mostram como você pode criar um cenário de teste para demonstrar essa funcionalidade.
  1. No Visual Studio. NET, crie um novo aplicativo de C++ gerenciado chamado determine0S . Isso cria um simples aplicativo "Olá mundo". Abra DetermineOS.cpp no editor de código clicando duas vezes na janela Solution Explorer.
  2. Exclua todo o código no DetermineOS.cpp.
  3. Colar no código a seguir:
    #include "stdafx.h"
    
    #using <mscorlib.dll>
    
    using namespace System;
    
    // This is the entry point for this application
    #ifdef _UNICODE
    int wmain(void)
    #else
    int main(void)
    #endif
    {
       //get OperatingSystem info from the system namespace
       System::OperatingSystem *osInfo = System::Environment::OSVersion;
    
       //is the platform win9x or NT
       switch(osInfo->Platform)
       {
          //platform is win9x
          case System::PlatformID::Win32Windows:
        
             switch (osInfo->Version->Minor)
             {
                  case 0:
                     Console::WriteLine ("Windows 95");
                  break;
                  case 10:
                  if(osInfo->Version->Revision.ToString() == "2222A")
                     Console::WriteLine("Windows 98 Second Edition");
                  else
                     Console::WriteLine("Windows 98");
                  break;
                  case  90:
                     Console::WriteLine("Windows ME");
                  break;
             }
             break;
    			
             //platform is NT
             case System::PlatformID::Win32NT:
    
                switch(osInfo->Version->Major)
                {
                   case 3:
                      Console::WriteLine("Windows NT 3.51");
                   break;
                   case 4:
                      Console::WriteLine("Windows NT 4.0");
                   break;
                   case 5:
                   if (osInfo->Version->Minor==0) 
                      Console::WriteLine("Windows 2000");
                   else
                      Console::WriteLine("Windows XP");
                   break;
                }break;
       }
    
       Console::ReadLine();
       return 0;
    }
    					
  4. Pressione CTRL+F5 para executar o aplicativo. Observe que o Windows versão é exibida na janela console.

Referências

Para obter informações mais gerais sobre o Visual C++. NET, visite o seguinte grupo de notícias Usenet da Microsoft e o site da Microsoft:
Microsoft.public.dotnet.languages.vc (http://www.microsoft.com/communities/newsgroups/en-us/default.aspx?query=Microsoft.public.dotnet.languages.vc+&dg=&cat=en_US_d02fc761-3f6b-402c-82f6-ba1a8875c1a7&lang=en&cr=&pt=&catlist=&dglist=&ptlist=&exp=&sloc=en-us)

Visual C++ .NET (2002) Support Center (http://support.microsoft.com/default.aspx?xmlid=fh%3ben-us%3bvcnet)

A informação contida neste artigo aplica-se a:
  • Microsoft Visual C++ .NET 2002 Standard Edition
  • Microsoft Visual C++ .NET 2003 Standard Edition
  • Microsoft Visual C++ 2005 Express Edition
Palavras-chave: 
kbmt kbhowtomaster kbnewsgrouplink KB307394 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 307394  (http://support.microsoft.com/kb/307394/en-us/ )