31 Gäste und 0 Benutzer online | Anmelden | Registrieren


Designelement Startseite

Designelement Windows-Artikel
  Designelement Problemlösungen
  Designelement Einstellungen
  Designelement Anleitungen
  Designelement Hardware
  Designelement FAQ
  Designelement C#.NET

Designelement Forum
Designelement Gästebuch

Designelement Programme
  Designelement Onlinetools
  Designelement Downloads

Designelement Suche
Designelement Links

Designelement Impressum
Designelement Kontakt

Designelement Anmelden





Zu den C#.NET-Artikeln

  Betriebssystem ermitteln - C#
Am 11.10.2007 verfasst von Andreas Nägeli. Hits: 1167

Oft ist es für ein Programm wichtig zu wissen, auf welchem Betriebssystem es ausgeführt wird, da das .NET-Framework zwar plattformunabhängig sein soll, aber manche Operationen nur für gewisse Betriebssysteme bereitsstellt.

Die Informationen, die wir benötigen, befinden sich im Objekt Environment.OSVersion.Version. Da hier nur die Versionsdaten zur Verfügung stehen, müssen wir daran die einzelnen Betriebssysteme unterscheiden. Im Einzelnen:

Windows 98: Major 4, Minor 10
Windows ME: Major 4, Minor 90
Windows NT4: Major 4, Minor 0
Windows 2000: Major 5, Minor 0
Windows XP: Major 5, Minor 1
Windows Server 2003: Major 5, Minor 2
Windows Vista: Major 6, Minor 0

Mit Hilfe dieser Informationen können wir nun eine statische Klasse entwerfen:

public static class WinOS {
  public static readonly int Unknown = 0;
  public static readonly int Win98 = 1;
  public static readonly int WinME = 2;
  public static readonly int WinNT4 = 3;
  public static readonly int Win2000 = 4;
  public static readonly int WinXP = 5;
  public static readonly int Win2003 = 6;
  public static readonly int WinVista = 7;

  public static int getOS() {
    Version o = Environment.OSVersion.Version;
    if (o.Major == 4 && o.Minor == 10) return Win98;
    if (o.Major == 4 && o.Minor == 90) return WinME;
    if (o.Major == 4 && o.Minor == 0) return WinNT4;
    if (o.Major == 5 && o.Minor == 0) return Win2000;
    if (o.Major == 5 && o.Minor == 1) return WinXP;
    if (o.Major == 5 && o.Minor == 2) return Win2003;
    if (o.Major == 6 && o.Minor == 0) return WinVista;
    return Unknown;
  }

  public static String getOSString() {
    switch (WinOS.getOS()) {
      case 1: return "Windows 98";
      case 2: return "Windows ME";
      case 3: return "Windows NT4";
      case 4: return "Windows 2000";
      case 5: return "Windows XP";
      case 6: return "Windows 2003 Server";
      case 7: return "Windows Vista";
      default: return "Unbekannt";
    }
  }

  public static String getSP() {
    return Environment.OSVersion.ServicePack;
  }
}


Wer nur den Namen ausgeben möchte, kann auch die getOS-Methode umschreiben und den Rest weglassen. Zum Prüfen auf ein bestimmtes Betriebssystem finde ich diese Lösung allerdings besser im Sinne der Objektorientierung.

Die Verwendung der Klasse erschließt sich aus einer beispielhaften Main-Funktion:

static void Main(string[] args) {
  Console.WriteLine(WinOS.getOSString() + " - " + WinOS.getSP());
  if (WinOS.getOS() == WinOS.WinXP)
    Console.WriteLine("Windows XP");
}


Kommentiertes Codebeispiel herunterladen (CLWinOS.rar, 25 KB, VS80)

Bewertung dieses Artikels von 3 Benutzern: Mit 6 von 10 Punkten bewertet - 6.33 / 10 Punkte

Wie finden Sie diesen Artikel?











  2002 - 2008 Designelement Computerleben.net Designelement Sitemap