Artigo: 307394 - Última revisão: quarta-feira, 18 de Janeiro de 2006 - Revisão: 1.5

Como determinar a versão do Windows utilizando 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 | Reduzir tudo

Sumário

Este artigo demonstra como determinar qual o sistema operativo está a ser utilizado no sistema onde a aplicação está a ser executado. Diferencia 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 pressupõe que tenha uma compreensão de nível intermédio de programação de C++.

Dados da versão do Windows

Para determinar o sistema operativo que está a executar num determinado sistema, é necessário os seguintes dados:

Reduzir 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

NOTA: apesar do código deste artigo procurar todas as versões Windows de 32 bits, nem Visual Studio .NET o .NET Framework é suportado no Windows 95 ou Windows NT 3.51.

Obter as informações de sistema operativo

Crie um apontador para uma classe de sistema operativo e atribua-as informações de sistema operativo actuais:
System::OperatingSystem *osInfo = System::Environment::OSVersion;
				

Determinar o ID de plataforma

O primeiro passo na avaliação lógica das informações de sistema operativo é para determinar a plataforma está em utilização, conforme é ilustrado abaixo. Isto é efectuado utilizando PlatformID . PlatformID é uma propriedade da classe do sistema operativo . Um valor enumerado "Win32Windows" significa um sistema operativo da família Windows 9 x de produtos. "WinNT" indica um sistema operativo da família do 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 foi determinada seja o Windows 9 x , a versão principal ou secundária pode ser analisada para determinar a versão específica como o seguinte código demonstra.
//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 foi determinada seja 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;
				

Criar o exemplo

Os passos seguintes mostram como pode criar um cenário de teste para demonstrar esta funcionalidade.
  1. No Visual Studio. NET, crie uma nova aplicação C++ gerida chamada determine0S . Isto cria uma aplicação simples "Olá mundo". Abra DetermineOS.cpp no editor de código fazendo-o na janela Solution Explorer.
  2. Elimine todos os o código DetermineOS.cpp.
  3. Colar no seguinte código:
    #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. Prima CTRL + F5 para executar a aplicação. Tenha em atenção que o Windows versão é apresentada na janela da consola.

Referências

Para obter informações mais gerais sobre o Visual C++. NET, visite o seguinte Microsoft Usenet newsgroups e Microsoft Web site:
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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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/ )