Ottenere la versione del Sistema Operativo in uso, in Visual Basic.NET, solitamente è un'operazione molto semplice:

Dim OSVersion As String = "OSVersion: " & Environment.OSVersion.ToString()

La stringa OSVersion avrà un valore simile a questo "OSVersion: Microsoft Windows NT 6.1.7601 Service Pack 1"

Non soddisfatti? Eppure è possibile sapere la versione più semplificatamente e mirata rispetto a questa stringa, che restituirà la versione principale, la sottoversione e il Service Pack: X.Y SPZ che tipo, per chi ha Windows Vista SP2 verrebbe restituita così 6.0 SP2, composta da 3 valori diversi che quindi potrete utilizzare anche solo uno dei 3 per vostri motivi.

Come potrete leggere nelle guide, le espressioni regolari consistono in una porzione di testo, che pur non ripetendosi esattamente uguale, è possibile ricondurre ad uno schema specifico.

Di questa stringa

Microsoft Windows NT 6.1.7601 Service Pack 1

sappiamo che le cose regolari sono

Microsoft Windows NT X.Y.ABCD Service Pack Z

Quindi possiamo dire che X è uguale alla versione principale del SO, Y alla sottoversione, ABCD alla Build che non ci interessa molto e Z del Service Pack. Per procedere dobbiamo appunto prendere questi valori singolarmente e poi magari unirli collettivamente per un risultato completo.

Innanzitutto, le espressioni regolari, sono la traduzione di RegularExpression (Abbreviativo RegEx) e per usarle è necessario importarle, quindi mettete questo fra gli Import

Imports System.Text.RegularExpressions

Dopo di ché è necessario inserire la nostra funzione riconosca tutte le parti della versione di Windows

Private Function Return_SO() As String
        Try
            Dim OSVersion As String = "OSVersion: " & Environment.OSVersion.ToString()
            Dim reg As New Regex("Microsoft Windows NT (?<Argument>.+?)\.(?<stringa>.+?)\.(?<build>.+?)\ Service Pack (?<id>.+?)")
            Dim m As Match = reg.Match(OSVersion)
            If m.Success Then
                Dim arg As String = m.Groups("Argument").Value 'Versione SO
                Dim arg2 As String = m.Groups("stringa").Value 'Sottoversione SO
                Dim arg3 As String = m.Groups("id").Value 'Versione Service Pack
                Dim arg4 As String = m.Groups("build").Value 'Versione Build
                Return (arg & "." & arg2 & " SP" & arg3)
            Else
                'Se la stringa del SO non si attiene all'espressione regolare variabile
                '(O se fatto male l'espressione regolare variabile non si attiene alla
                'stringa della versione del SO)
                MsgBox("Impossibile verificare il Sistema Operativo", MsgBoxStyle.Critical)
                Return 0
            End If
        Catch ex As InvalidOperationException
            'Se non è possibile usare Environment.OSVersion.ToString() per ignoti problemi
            MsgBox("Impossibile identificare il Sistema Operativo attualmente utilizzato", MsgBoxStyle.Critical)
            Return 0
        End Try
        Return 0
    End Function

Ora, come potrete notare dalla funzione avremo 5 variabili:

OSVersion, si attiene alla versione del Sistema Operativo ritornata da Windows in numeri,

arg si attiene alla versione principale del SO, 

arg2 si attiene alla sottoversione

arg3 si attiene al Service Pack

arg4 alla versione Build

Potremo quindi ritornare gli arg a nostra preferenza, come ho fatto io nella funzione ritorna tipo 6.1 SP1. Potrete aggiungere anche la Build a questo, o togliere l'SP a vostra preferenza. Potreste anche cambiare i valori numerici nella versione letterale di Windows, tipo Windows XP ha la versione a 5, Windows Vista ha la versione a 6, NON confondetevi pensando che Windows 7 abbia invece la versione 7, mentre in realtà ha anche lui la versione 6 ma la sottoversione 1 (quindi appunto 6.1) e quindi dovreste combinarle per ritornare una versione letterale dettagliata. Per la lista delle versioni alle corrispondenti letterali potete leggerle quà http://it.wikipedia.org/wiki/Windows_NT#Le_versioni_del_progetto_Windows_NT. Combinando così la versione e sottoversione potrete avere il SO scritto in modo letterale, e magari anche aggiungere SP o Service Pack con il corrispettivo numero.

Spero questo tutorial vi sia stato d'aiuto