Detecter la version de windows

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 928 fois - Téléchargée 36 fois


Contenu du snippet

Ce code est une fonction qui renvoie un nombre représentant la version de Windows. Il est extrait d'un programme beaucoup plus gros affichant de nombreuses informations sur le système.

Source / Exemple :


Option Explicit
Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long
Private Const VER_PLATFORM_WIN32s = 0
Private Const VER_PLATFORM_WIN32_WINDOWS = 1
Private Const VER_PLATFORM_WIN32_NT = 2
Private Type OSVERSIONINFO
    dwOSVersionInfoSize As Long
    dwMajorVersion As Long
    dwMinorVersion As Long
    dwBuildNumber As Long
    dwPlatformId As Long
    szCSDVersion As String * 128
    wSPMajor As Integer
End Type

Public Enum EnumWinVer
   Win95 = 0
   Win95OSR2 = 1
   Win98 = 2
   Win98SE = 3
   WinME = 4
   WinNT3_0 = 5
   WinNT3_1 = 6
   WinNT3_5 = 7
   WinNT4 = 8
   WinNT5 = 9
   Win2k = 9
   WinXP = 10
End Enum
   

Public Function GetVersion() As EnumWinVer
    Dim myVer As OSVERSIONINFO
    Dim dl&
    myVer.dwOSVersionInfoSize = 148
    dl& = GetVersionEx&(myVer)
    If myVer.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then
        If myVer.dwMajorVersion = 4 And myVer.dwMinorVersion = 0 Then
            If myVer.dwBuildNumber = 950 Then
                GetVersion = Win95
            Else
                GetVersion = Win95OSR2
            End If
        ElseIf myVer.dwMajorVersion = 4 And myVer.dwMinorVersion = 10 Then
            If myVer.dwBuildNumber = 1998 Then
                GetVersion = Win98
            Else
                GetVersion = Win98SE
            End If
        ElseIf myVer.dwMajorVersion >= 4 And myVer.dwMinorVersion > 10 Then
            GetVersion = WinME
        End If
    ElseIf myVer.dwPlatformId = VER_PLATFORM_WIN32_NT Then
        If myVer.dwMajorVersion = 3 And myVer.dwMinorVersion = 0 Then
            GetVersion = WinNT3_0
        ElseIf myVer.dwMajorVersion = 3 And myVer.dwMinorVersion = 1 Then
            GetVersion = WinNT3_1
        ElseIf myVer.dwMajorVersion = 3 And myVer.dwMinorVersion = 5 Then
            GetVersion = WinNT3_5
        ElseIf myVer.dwMajorVersion = 4 Then
            GetVersion = WinNT4
        ElseIf myVer.dwMajorVersion = 5 And myVer.dwMinorVersion = 0 Then
            GetVersion = Win2k
        ElseIf myVer.dwMajorVersion = 5 And myVer.dwMinorVersion = 1 Then
            GetVersion = WinXP
        End If
    End If
End Function

Conclusion :


Je n'ai pas eu l'occasion de tester ce code sous d'autres systèmes que le mien (WindowsME). S'il comporte une erreur, merci de le signaler.

A voir également

Ajouter un commentaire

Commentaires

Messages postés
278
Date d'inscription
vendredi 16 avril 2004
Statut
Membre
Dernière intervention
27 avril 2006
1
Fonctionne sous XP home SPK 2 :) sa va me servire
Messages postés
1
Date d'inscription
vendredi 3 janvier 2003
Statut
Membre
Dernière intervention
21 février 2004

fonctionne sous xp pro
Messages postés
40
Date d'inscription
samedi 12 avril 2003
Statut
Membre
Dernière intervention
13 mai 2006

Je ne suis pas en mesure de tester moi-même s'il existe un moyen de différencier WinXP-HE de WinXP-Pro, ni un serveur d'une autre version, ni Win2003 d'un autre, puisque je ne possède que WinME.

Il faudrait soit chercher des informations déjà publiées, soit que quelqu'un possédant un de ces sytèmes utilise l'API GetVersionEx et trouve des valeurs significatives dans les résultats.
Messages postés
129
Date d'inscription
dimanche 9 décembre 2001
Statut
Membre
Dernière intervention
12 janvier 2009

Il te manque qques windows, puisque le 2003 est sorti !
Mais y'a-t-il moyen de différencier un XP Home d'un Pro ? un serveur d'un Workstation ?
Ca serai interressant !!!
parce que mm sur win2k, nt4 ... il existe des version serveur !
A+
Messages postés
40
Date d'inscription
samedi 12 avril 2003
Statut
Membre
Dernière intervention
13 mai 2006

Pour connaître la version de Windows, vous appelez la fonction avec quelque chose comme :
RetVal = GetVersion()

RetVal prend alors une valeur entière symbolisant la version de Windows (par exemple : 2 pour Windows 98).

La variable myVer est interne à la fonction GetVersion(). Vous n'avez pas besoin de vous en occuper.
Afficher les 6 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.