Betriebssystemerkennung mit VB .NET

Veröffentlicht: 12. Jun 2003 | Aktualisiert: 24. Jun 2004

Von Mathias Schiffer

Dieser MSDN Quickie zeigt Ihnen, wie Sie aus Visual Basic .NET heraus ermitteln, auf welcher Windowsversion Ihre Anwendung abläuft.

Das .NET Framework macht es einfach, die Versionsnummer des eingesetzten Betriebssystems zu ermitteln: Hierfür steht die Klasse OperatingSystem im Namespace System zur Verfügung. Neben der Versionsnummer selber benötigen Sie weiterhin die Information, ob ein DOS- ein oder NT-basierendes Windows eingesetzt wird - beide Informationen erhalten Sie durch Abfrage der Eigenschaften Version.Major, Version.Minor und Platform der Klasse.

Um ein Objekt vom Typ OperatingSystem zu erhalten, das mit den Angaben über das verwendete Betriebssystem gefüllt ist, fragen Sie die System.Environment-Eigenschaft OSVersion ab.

' Informationen über das verwendete Betriebssystem ermitteln 
Dim OSInfo As System.OperatingSystem _ 
  = System.Environment.OSVersion

Haben Sie diese Kenndaten in Erfahrung gebracht, fehlt zur Entschlüsselung "nur" noch eine Zuordnung der verschiedenen möglichen Angaben zu den existierenden Windows-Versionen. Die nachfolgende Tabelle stellt diese Zuordnung zur Verfügung (da Windows 95 und Windows NT 3.51 das .NET Framework nicht unterstützen, vermissen Sie diese beiden Varianten in der Tabelle nicht zufällig).

 

Windows 98

Windows Me

Windows NT 4.0

Windows 2000

Windows XP

Windows Server 2003

Platform

1

1

2

2

2

2

Version.Major

4

4

4

5

5

5

Version.Minor

10

90

0

0

1

2

Abschließend soll ein sehr einfacher Modul-Beispielcode ein mögliches Vorgehen beschreiben, um auf dieser Basis dem Anwender den Namen seiner Windows-Version zu präsentieren:

Module Module1 
  Sub Main() 
 MsgBox("Der Name Ihrer Windows-Version lautet" _ 
  & vbNewLine & GetVersionString()) 
  End Sub 
  Public Function GetVersionString() As String 
 ' Informationen über das verwendete Betriebssystem ermitteln 
 Dim OSInfo As System.OperatingSystem _ 
   = System.Environment.OSVersion 
 With OSInfo 
   MsgBox(.Version.Revision.ToString()) 
   Select Case .Platform 
  Case .Platform.Win32Windows 
 ' Windows 98 / 98SE oder Windows Me 
 ' (Windows 95 unterstützt .NET nicht) 
 Select Case .Version.Minor 
   Case 10 
  GetVersionString = "Windows 98" 
   Case 90 
  GetVersionString = "Windows Me" 
 End Select 
  Case .Platform.Win32NT 
 ' Windows NT 4.0, 2000, XP oder Server 2003 
 ' (Windows NT 3.51 unterstützt .NET nicht) 
 Select Case .Version.Major 
   Case 4 
  GetVersionString = "Windows NT 4.0" 
   Case 5 
  Select Case .Version.Minor 
 Case 0 : GetVersionString = "Windows 2000" 
 Case 1 : GetVersionString = "Windows XP" 
 Case 2 : GetVersionString = "Windows Server 2003" 
  End Select 
 End Select 
  Case Else 
 GetVersionString = "Unbekannte Windows-Version" 
   End Select 
 End With 
  End Function 
End Module