Comment connaitre la version exacte de Windows

Numéro d'article: 469656 - Voir les produits auxquels s'applique cet article
Ancien nº de publication de cet article : F19623
Agrandir tout | Réduire tout

Symptômes


Comment récupérer les détails de la version de Windows NT/2000/XP ?


Résolution


Il est possible de connaître depuis Visual Basic les détails
suivants de la version de Windows installé :
- Version Workstation ou Server
- Version du Service Pack
- Terminal Server est-il installé


EXEMPLE :

1) Charger Visual Basic et créer un projet EXE standard

2) Ajouter un module et copier le code suivant :

Module1.bas
-----------

Public Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA"
(lpVersionInformation As OSVERSIONINFOEX) As Long

'Déclaration des constantes
Const VER_SUITE_SMALLBUSINESS = &H1
Const VER_SUITE_ENTERPRISE = &H2
Const VER_SUITE_BACKOFFICE = &H4
Const VER_SUITE_COMMUNICATIONS = &H8
Const VER_SUITE_TERMINAL = &H10
Const VER_SUITE_SMALLBUSINESS_RESTRICTED = &H20
Const VER_SUITE_EMBEDDEDNT = &H40
Const VER_SUITE_DATACENTER = &H80
Const VER_SUITE_SINGLEUSERTS = &H100
Const VER_SUITE_PERSONAL = &H200

Const VER_NT_WORKSTATION = &H1
Const VER_NT_DOMAIN_CONTROLLER = &H2
Const VER_NT_SERVER = &H3

'Structure contenant les informations de version de l'OS
Public Type OSVERSIONINFOEX
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
wServicePackMajor As Integer
wServicePackMinor As Integer
wSuiteMask As Integer
wProductType As Byte
wRest As Byte
End Type

Public Sub GetWindowsVersion()
Dim ver As OSVERSIONINFOEX
Dim strVer As String
Dim os As String
Dim ostype As String

ver.dwOSVersionInfoSize = Len(ver)
GetVersionEx ver

If ver.dwMajorVersion <= 4 Then
os = "Windows NT"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 0 Then
os = "Windows 2000"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 1 Then
os = "Windows XP"
End If

If ver.dwMajorVersion > 4 Then
'Quelle version exacte 2000 s'agit-il ?
Select Case ver.wProductType
Case VER_NT_WORKSTATION
If ver.wSuiteMask And VER_SUITE_PERSONAL Then
ostype = "Edition Familiale"
Else
ostype = "Professionnel"
End If
Case VER_NT_SERVER
If ver.wSuiteMask And VER_SUITE_DATACENTER Then
ostype = "DataCenter Server "
ElseIf ver.wSuiteMask And VER_SUITE_ENTERPRISE Then
ostype = "Advanced Server "
Else
ostype = "Server "
End If
End Select

'Quelle version exacte de NT s'agit-il ?
Else
Dim regobj As REGTool5.Registry
Set regobj = New REGTool5.Registry
Dim tempostype As String
regobj.GetKeyValue HKEY_LOCAL_MACHINE,
"SYSTEM\CurrentControlSet\Control\ProductOptions", "ProductType",
tempostype
If tempostype = "WinNT" Then
ostype = "Workstation"
ElseIf tempostype = "SERVERNT" Then
ostype = "Server"
ElseIf tempostype = "LanmanNT" Then
ostype = "Server (Controleur de domaine)"
End If
Set regobj = Nothing
End If

Form1.txtOSType = os & " " & ostype

If ver.wServicePackMajor >= 1 Then
Form1.txtSP = "Service Pack " & ver.wServicePackMajor & "." &
ver.wServicePackMinor
Else
Form1.txtSP = "Aucun Service Pack installé"
End If


'Terminal Server est-il installé ?
If ver.wSuiteMask And VER_SUITE_TERMINAL Then
Form1.txtTS.Text = "Terminal Services est installé."
Else
Form1.txtTS.Text = "Terminal Services n'est pas disponible."
End If

End Sub


3) Sur une feuille, ajouter les contrôles suivants :
- 3 labels
- 3 textboxes (txtOSType, txtSP et txtTS)
- 1 bouton de commande (Command1)

4) Ajouter une reference a "Registry Access Functions"

5) Dans l'évenement Click du bouton, ajouter le code suivant :
Private Sub Form_Load()
Label1.Caption = "Type"
Label2.Caption = "Service Pack"
Label3.Caption = "Terminal Services"
End Sub

Private Sub Command1_Click()
GetWindowsVersion
End Sub

6) Appuyer sur F5 pour lancer le projet, puis cliquer sur le bouton de
commande. Les informations apparaitront dans les textboxs correspondants.


Références


Pour plus de renseignements, veuillez-vous référer à :
l'aide en ligne, aux mots-clés souhaités ;
le site Internet à l'adresse suivante :
http://msdn.microsoft.com/library/psdk/sysmgmt/sysinfo_49iw.htm
http://msdn.microsoft.com/library/psdk/sysmgmt/sysinfo_3a0i.htm


MOTS-CLES :

La liste de(s) mot(s) suivant(s) permet une recherche plus efficace de
cette fiche technique : vb, getversionex, OSVERSIONINFOEX

Propriétés

Numéro d'article: 469656 - Dernière mise à jour: vendredi 22 février 2002 - Version: 1.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual Basic 5.0 Édition Entreprise
  • Microsoft Visual Basic 5.0 Édition initiation
  • Microsoft Visual Basic 5.0 Édition professionnelle
  • Microsoft Visual Basic 6.0 Édition professionnelle
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows NT Workstation 4.0 Édition Développeur
  • Microsoft Windows XP Édition familiale
Mots-clés : 
pgm KB469656
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com