En este artículo paso a paso se explica cómo determinar
qué sistema operativo está en uso en el sistema donde se ejecuta la
aplicación. En este artículo se distingue entre Microsoft Windows 95,
Microsoft Windows 98, Microsoft Windows 98 Segunda edición, Microsoft Windows
Millennium Edition, Microsoft Windows NT 3.51, Microsoft Windows NT 4.0,
Microsoft Windows 2000 y Microsoft Windows XP.
Requisitos
- Microsoft Visual C# .NET
- Microsoft Visual C# 2005
- Conocimientos de nivel intermedio de programación en
Visual C#
Obtener los datos de la versión
de Windows
Para determinar el sistema operativo que se ejecuta
en un sistema, se necesitan los datos siguientes:
+--------------------------------------------------------------+| |Windows|Windows|Windows|Windows NT|Windows|Windows|| | 95 | 98 | Me | 4.0 | 2000 | XP |+--------------------------------------------------------------+|IdPlataforma | 1 | 1 | 1 | 2 | 2 | 2 |+--------------------------------------------------------------+|Principal | | | | | | || versión | 4 | 4 | 4 | 4 | 5 | 5 |+--------------------------------------------------------------+|Secundaria | | | | | | || versión | 0 | 10 | 90 | 0 | 0 | 1 |+--------------------------------------------------------------+
NOTA: aunque el uso del código incluido en este artículo se ha
comprobado con todas las versiones de 32 bits de Windows, Windows 95 y Windows
NT 3.51 no admiten Microsoft Visual Studio .NET o el entorno de tiempo de
ejecución del lenguaje común.
Obtener información del sistema
operativo
El espacio de nombres
System contiene una clase denominada
OperatingSystem. Las propiedades de esta clase proporcionan la información
necesaria acerca del sistema operativo en uso. La propiedad
OSVersion de la clase
System.Environment devuelve un objeto
OperatingSystem.
System.OperatingSystem osInfo = System.Environment.OSVersion;
Determinar la
plataforma
El primer paso para la evaluación lógica de la
información de
OperatingSystem consiste en determinar qué plataforma se está utilizando. Es
posible emplear la propiedad
PlatformID de la clase
OperatingSystem para determinar la plataforma.
Por ejemplo, el valor
enumerado de la propiedad
Win32Windows indica uno de los sistemas operativos siguientes:
- Windows 95
- Windows 98
- Windows 98 Segunda edición
- Windows Millennium Edition
De forma similar, la propiedad
WinNT indica uno de los sistemas operativos siguientes:
- Windows NT 3.51
- Windows NT 4.0
- Windows 2000
- Windows XP
switch(osInfo.Platform)
{
case System.PlatformID.Win32Windows:
{
// Código para determinar la versión específica de Windows 95,
// Windows 98, Windows 98 Segunda edición o Windows Millennium Edition.
}
case System.PlatformID.Win32NT:
{
// Código para determinar la versión específica de Windows NT 3.51,
// Windows NT 4.0, Windows 2000 o Windows XP.
}
}
Determinar la versión específica de Windows 95, Windows 98, Windows 98 Segunda edición o Windows Me
Si determina que la plataforma es Windows 95, Windows 98, Windows
98 Segunda edición o Windows Millennium Edition, puede analizar la versión
principal o secundaria para averiguar la versión concreta.
// La plataforma es Windows 95, Windows 98,
// Windows 98 Segunda edición o Windows Me.
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 Segunda edición");
else
Console.WriteLine("Windows 98");
break;
case 90:
Console.WriteLine("Windows Me");
break;
}break;
Determinar la versión
específica
de Windows NT, Windows 2000 o Windows XP
Si determina que la
plataforma es Windows NT 3.51, Windows NT 4.0, Windows 2000 o Windows XP, es
posible analizar la versión principal o la secundaria para averiguar la
versión específica.
// La plataforma es Windows NT 3.51, Windows NT 4.0, Windows 2000,
// o Windows XP.
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;
Generar el ejemplo
Con los pasos siguientes se crea un escenario de prueba que demuestra esta
funcionalidad:
- Abra una nueva aplicación de consola de C# en Visual
Studio .NET. La ventana de código de Class1.cs se abre de forma
predeterminada.
Nota: en Visual Studio 2005, el archivo predeterminado es Program.cs.
Puede hacer doble clic en Program.cs para abrir la ventana de
código. - Reemplace todo el código de la ventana del editor de
código Class1.cs con el siguiente código de ejemplo:
using System;
namespace determineOS_CS
{
class Class1
{
static void Main(string[] args)
{
// Obtener la información de OperatingSystem del espacio de nombres system.
System.OperatingSystem osInfo =System.Environment.OSVersion;
// Determinar la plataforma.
switch(osInfo.Platform)
{
// La plataforma es Windows 95, Windows 98,
// Windows 98 Segunda edición, o Windows Me.
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 Segunda edición");
else
Console.WriteLine("Windows 98");
break;
case 90:
Console.WriteLine("Windows Me");
break;
}
break;
// La plataforma es Windows NT 3.51, Windows NT 4.0, Windows 2000,
// o Windows XP.
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 ();
}
}
}
- Presione CTRL+F5 para ejecutar la aplicación. Observe que
la versión de Windows aparece en la ventana de consola.
Id. de artículo: 304283 - Última revisión: lunes, 23 de octubre de 2006 - Versión: 2.1
La información de este artículo se refiere a:
- Microsoft Visual C# .NET 2002 Standard Edition
- Microsoft Visual C# 2005 Express Edition
| kbhowtomaster kbprod2web KB304283 |