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
Aggiungi un commento