Come trovare le informazioni del sistema
Nei sistemi Win32, esiste l’API GetVersionEx che restituisce le informazioni nella struttura OSVERSIONINFO. Quindi possiamo guardare i valori di tutti i vari campi della struttura ed analizzare tutto (o quasi!!) del sistema operativo in esecuzione.
Il Framework 2005 ci fornisce la classe Environment. Questa classe contiene un metodo chiamato OSVersion che restituisce l’oggetto OperatingSystem. Quest’oggetto può essere utilizzato per fornire informazioni sulla versione del sistema.
Come ottenere l’oggetto OperatingSystem
La classe OperatingSystem contiene tre proprietà:
- Platform: restituisce il valore del PlatformID.Ha tre differenti valori.
- Win32NT àWindows NT
- Win32Windows à Windows 95 o superiore
- Win32S à Win32s è in esecuzione su una versione a 16-di Windows.
2. CSD: questa proprietà indica il numero Corrected Service Diskette del sistema operative o in alter parole la stringa che rappresenta la service pack installata.
- Version: Restiruisce la versione. Questa classe è vuota, ma la classe Version standard usata per indicare la versione di qualsiasi assembly in .NET definisce un insieme di valori indicati come Major.Minor.Revision.Build. La classe Version contiene, infatti, 4 proprietà che restituiscono completamente le informazioni del sistema operativo.
- Major – Numero della Major Version
- Minor - Numero della Minor Version
- Revision - Numero della Revision
- Build - Numero della Build
Cosa significano questi valori???
Combinando tre dei valori restituiti otterremo l’esatta versione del sistema operative utilizzato. Nella tabella seguente elenco i possibili risultati che possiamo ottenere dalla combinazione dei valori ottenuti.
|
PlatformID
|
Major Version
|
Minor Version
|
Sistema Operativo
|
|
Win32Windows
|
>= 4
|
0
|
Win95
|
|
Win32Windows
|
>= 4
|
> 0 AND < 90
|
Win98
|
|
Win32Windows
|
>= 4
|
> 0 AND >= 90
|
WinMe
|
|
Win32NT
|
<= 4
|
0
|
WinNT
|
|
Win32NT
|
5
|
0
|
Win2K
|
|
Win32NT
|
5
|
> 0
|
WinXP
|
Nel codice seguente invece una breve descrizione Following a small sample from the class that shows the use of Environment class in System namespace.
Dim os As OperatingSystem = Environment.OSVersion
' Prendiamo le informazioni della versione
Dim vs As Version = os.Version
Private Me.m_nMajorVer = vs.Major
Private Me.m_nMinorVersion = vs.Minor
Private Me.m_nRevision = vs.Revision
Private Me.m_nBuildNumber = vs.Build
' Prendiamo le informazioni della service pack
Private Me.m_strServicePack = os.ServicePack
Ciao
Ivan