VB.net – Windows Version erkennen


Wenn man ein Programm mit Vb.net erstellt, ist es in den meisten Fällen nicht notwendig, die Windows Version abzufragen, auf welchen das Programm ausgeführt wird. Doch programmiert man ein Tool/Programm was auf spezielle Funktionen zurückgreift, die nur in von einer bestimmten Windows Version unterstützt werden, so ist es ganz praktisch beim Programmstart die Version in Erfahrung zu bringen.
Da .net hier sehr viele Funktionen bietet um Systeminformationen abzufragen, ist dies mit einer kleinen Funktion sehr schnell erledigt.
Über den System Zugriff: System.Environment.OSVersion erhält man als Rückgabewert eine Nummer. Entsprechende Unterabfragen wie platform, major und minor liefern weitere Zahlen, mit welchen sich durch Kombination das Betriebssystem ermitteln lässt.
In der MSDN Online Bibliothek kann man nachlesen welche Nummer/Kombination welchen Betriebssystem entspricht.

Windows 98 Windows Me Windows NT 4.0 Windows 2000 Windows XP Windows Server 2003 Windows Vista /2008 Server Windows 7
Platform 1 1 2 2 2 2 2 2
Version.Major 4 4 4 5 5 5 6 6
Version.Minor 10 90 0 0 1 ? ?

In der Funktion lassen sich über Select Case Anweisungen das Betriebssystem „filtern“.

Public Function func_read_windows_version

Funktion definieren

Dim os_version As System.OperatingSystem = System.Environment.OSVersion
Dim os_is_version As String

OS Version auslesen und in eine Variable speichern, os_is_version als Rückgabevariable definieren

With os_version
Select Case .platform
  Case .platform.win32windows
    Select Case (.Version.Minor)
      Case 0
        os_is_version = "Windows 95"
      Case 10
	If .version.revision.tostring() = "2222A" Then
	  os_is_version = "Windows 98 - Second Edition"
	Else
	  os_is_version = "Windows 98"
	End If
      Case 90
	  os_is_version = "Windows Me"
    End Select

Platform bestimmen = DOS Basis

Case .platform.win32nt
  Select Case (.Version.Major)
    Case 3
      os_is_version = "Windows NT 3.51"
    Case 4
      os_is_version = "Windows NT 4.0"
    Case 5
      Select Case (.Version.Minor)
        Case 0
	  os_is_version = "Windows 2000"
	Case 1
	  os_is_version = "Windows XP"
	Case 2
	  os_is_version = "Windows 2003 Server"
      End Select
    End Select
  End Select
End With

Platform bestimmen = NT Basis

return os_is_version
End Function

Rückgabe der Version
Die komplette Funktion sieht wie folgt aus:

Public Function func_read_windows_version
Dim os_version As System.OperatingSystem = System.Environment.OSVersion
Dim os_is_version As String
With os_version
Select Case .platform
  Case .platform.win32windows
    Select Case (.Version.Minor)
      Case 0
        os_is_version = "Windows 95"
      Case 10
	If .version.revision.tostring() = "2222A" Then
	  os_is_version = "Windows 98 - Second Edition"
	Else
	  os_is_version = "Windows 98"
	End If
      Case 90
	  os_is_version = "Windows Me"
    End Select
Case .platform.win32nt
  Select Case (.Version.Major)
    Case 3
      os_is_version = "Windows NT 3.51"
    Case 4
      os_is_version = "Windows NT 4.0"
    Case 5
      Select Case (.Version.Minor)
        Case 0
	  os_is_version = "Windows 2000"
	Case 1
	  os_is_version = "Windows XP"
	Case 2
	  os_is_version = "Windows 2003 Server"
      End Select
    End Select
  End Select
End With
return os_is_version
End Function