vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik:    |   VB-Versionen: VB6, VBA02.11.15
Windows-Version korrekt ermitteln

Hier wird eine Funktion vorgestellt, mit der sich die Windows-Version auch unter Windows 8/8.1 oder Windows 10 korrekt ermitteln lässt.

Autor:  Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  1.711 
http://www.tools4vb.de/System:  WinXP, Win7, Win8, Win10, Win11 Beispielprojekt 

Zum Thema "Windows-Version ermitteln" gibt es bereits zahlreiche Tipps. Die meisten Codes hierzu können aber nicht die korrekte Windows-Version zurückgeben, wenn die eigene Anwendung im Kompatibilitätsmodus läuft, d.h. wenn in den Eigenschaften der ausführbaren Datei der Kompatibilitätsmodus auf eine bestimmte (frühere) Windows-Version festgelegt ist. Auch wird von den meisten Funktionen das Betriebssystem Windows 8.1 bzw. Windows 10 nicht korrekt ermittelt. Es erfolgt immer die Rückmeldung, es handele sich um Windows 8 - auch wenn man die Anwendung unter Windows 10 ausführt.

Nachfolgende Funktion ermittelt auch bei eingestelltem Kompatibilitätsmodus bzw. auch unter Windows 8.1/Windows 10 die korrekte Windows-Version. Hierzu lesen wir die Version direkt aus per WMI aus.

' Ermittelt die Windows-Version per WMI
' Optional: sVersion - exakte Windows-Versionsnummer
'                      Bsp.: 6.2.9200
Public Function OSVersionWMI(Optional ByRef sVersion As String) As String
  Dim oWMI As Object
  Dim oSystem As Object
  Dim SQL As String
 
  On Error GoTo ErrHandler
 
  ' Abfrage
  SQL = "SELECT * FROM Win32_OperatingSystem"
 
  ' WMI-Objekt erstellen und Abfrage ausführen
  Set oWMI = GetObject("winmgmts:").ExecQuery(SQL)
  For Each oSystem In oWMI
    OSVersionWMI = Trim$(oSystem.Caption)  ' Windows-Version im Klartext
    sVersion = Trim$(oSystem.Version)      ' exakte Version-Nr.
    Exit For
  Next
 
  Set oSystem = Nothing
  Set oWMI = Nothing
  On Error GoTo 0
  Exit Function
 
ErrHandler:
  Set oSystem = Nothing
  Set oWMI = Nothing
End Function

Aufrufbeispiel:

Dim sVersion As String
Dim sWinVersion As String
 
sWinVersion = OSVersionWMI(sVersion)
MsgBox "Aktuelle Windows-Version:" & vbCrLf & _
  sWinVersion & vbCrLf & "Version: " & sVersion