J'ai essayé d'écrire une procédure qui renvoie, sans oublier aucune des
"déclinaisons" possibles, la version exacte de Windows en cours d'exécution.
J'en ai recensé une 20aine (j'espère ne pas en avoir oublié) et je n'ai bien sûr
pas toutes ces versions à ma disposition pour vérifier que mon code fonctionne
pour chacune d'elles ! Je l'ai testé avec Windows 98 SE, Windows Me et Windows
XP Edition familiale mais je suis loin du compte...
Si ceux d'entre vous qui ont accès à d'autres versions pouvaient :
-recopier le code joint dans un module standard d'un classeur Excel
-exécuter la procédure GetWindowsVersion
-poster le résultat (échec/réussite, erreur ?),
par avance, je les en remercie.
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
'================================
'infos sur l'OS utilisé (version, type, etc.)
Public Declare Function GetWinVersion Lib "kernel32" Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFO) As Long
Public Declare Function GetWinVersionEx Lib "kernel32" Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFOEX) As Long
Const VER_PLATFORM_WIN32_WINDOWS As Long = 1&
Const VER_PLATFORM_WIN32_NT As Long = 2&
'Structure pour les versions WinDOS
Public Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'sous type de certaines versions
End Type
'Structure pour les versions WinNT
Public Type OSVERSIONINFOEX
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'sous type ou info sur service pack installé
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 ver2 As OSVERSIONINFO
Dim strVer As String
Dim OS As String
Dim OSType As String
Dim NumeroVersion As String
Dim Detail As String
Dim Msg$
ver.dwOSVersionInfoSize = Len(ver)
GetWinVersionEx ver
Case VER_PLATFORM_WIN32_WINDOWS
If ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 0 Then
OS = "Windows 95"
If Detail = "A" Then
OS = OS & " OSR1"
ElseIf Detail = "B" Then
OS = OS & " OSR2"
End If
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 3 Then
OS = "Windows 95 OSR2"
If Detail = "B" Then
OS = OS & ".1"
ElseIf Detail = "C" Then
OS = OS & ".5"
End If
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 10 Then
OS = "Windows 98"
If Detail = "A" Then OS = OS & " SE (Seconde Édition)"
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 90 Then
OS = "Windows ME (Millenium Édition)"
End If
NumeroVersion = "[" & ver2.dwMajorVersion & "." _
& ver2.dwMinorVersion & _
IIf(Asc(Detail) = 0, "", "." & Detail) & "]"
Case VER_PLATFORM_WIN32_NT
If ver.dwMajorVersion = 3 And ver.dwMinorVersion = 0 Then
OS = "Windows NT 3.0"
ElseIf ver.dwMajorVersion = 3 And ver.dwMinorVersion = 1 Then
OS = "Windows NT 3.1"
ElseIf ver.dwMajorVersion = 3 And ver.dwMinorVersion = 51 Then
OS = "Windows NT 3.51"
ElseIf ver.dwMajorVersion = 4 Then
OS = "Windows NT 4.0"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 0 Then
OS = "Windows 2000"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 1 Then
OS = "Windows XP"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 2 Then
OS = "Windows 2003 Serveur"
End If
'Quelle version exacte NT/2000/XP/2003 s'agit-il ?
Select Case ver.wProductType
Case VER_NT_WORKSTATION
If ver.dwMajorVersion < 5 Then
OSType = "Station de travail"
Else
If ver.wSuiteMask And VER_SUITE_PERSONAL Then
OSType = "Édition familiale"
Else
OSType = "Professionnel"
End If
End If
Case VER_NT_DOMAIN_CONTROLLER
OSType = "Serveur (Contrôleur de domaine)"
Case VER_NT_SERVER
If ver.wSuiteMask And VER_SUITE_DATACENTER Then
OSType = "Serveur (Centre de données)"
ElseIf ver.wSuiteMask And VER_SUITE_ENTERPRISE Then
If ver.dwMajorVersion = 5 And ver.dwMinorVersion = 0 Then
OSType = "Serveur avancé"
Else
OSType = "Edition Entreprise"
End If
ElseIf ver.wSuiteMask And VER_SUITE_BLADE Then
OSType = "Édition Web"
Else
OSType = "Serveur"
End If
End Select
Système : Windows XP Professionnel Numéro Version : [5.1.2600] Service Pack : 1.0
Pas de problème.
Croquignol
Bonsoir,
J'ai essayé d'écrire une procédure qui renvoie, sans oublier aucune des "déclinaisons" possibles, la version exacte de Windows en cours d'exécution. J'en ai recensé une 20aine (j'espère ne pas en avoir oublié) et je n'ai bien sûr pas toutes ces versions à ma disposition pour vérifier que mon code fonctionne pour chacune d'elles ! Je l'ai testé avec Windows 98 SE, Windows Me et Windows XP Edition familiale mais je suis loin du compte... Si ceux d'entre vous qui ont accès à d'autres versions pouvaient : -recopier le code joint dans un module standard d'un classeur Excel -exécuter la procédure GetWindowsVersion -poster le résultat (échec/réussite, erreur ?), par avance, je les en remercie.
FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
'=============================== > 'infos sur l'OS utilisé (version, type, etc.)
Salut Frédéric,
Système : Windows XP Professionnel
Numéro Version : [5.1.2600]
Service Pack : 1.0
Pas de problème.
Croquignol
Bonsoir,
J'ai essayé d'écrire une procédure qui renvoie, sans oublier aucune des
"déclinaisons" possibles, la version exacte de Windows en cours d'exécution.
J'en ai recensé une 20aine (j'espère ne pas en avoir oublié) et je n'ai bien sûr
pas toutes ces versions à ma disposition pour vérifier que mon code fonctionne
pour chacune d'elles ! Je l'ai testé avec Windows 98 SE, Windows Me et Windows
XP Edition familiale mais je suis loin du compte...
Si ceux d'entre vous qui ont accès à d'autres versions pouvaient :
-recopier le code joint dans un module standard d'un classeur Excel
-exécuter la procédure GetWindowsVersion
-poster le résultat (échec/réussite, erreur ?),
par avance, je les en remercie.
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
'=============================== > 'infos sur l'OS utilisé (version, type, etc.)
Système : Windows XP Professionnel Numéro Version : [5.1.2600] Service Pack : 1.0
Pas de problème.
Croquignol
Bonsoir,
J'ai essayé d'écrire une procédure qui renvoie, sans oublier aucune des "déclinaisons" possibles, la version exacte de Windows en cours d'exécution. J'en ai recensé une 20aine (j'espère ne pas en avoir oublié) et je n'ai bien sûr pas toutes ces versions à ma disposition pour vérifier que mon code fonctionne pour chacune d'elles ! Je l'ai testé avec Windows 98 SE, Windows Me et Windows XP Edition familiale mais je suis loin du compte... Si ceux d'entre vous qui ont accès à d'autres versions pouvaient : -recopier le code joint dans un module standard d'un classeur Excel -exécuter la procédure GetWindowsVersion -poster le résultat (échec/réussite, erreur ?), par avance, je les en remercie.
FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
'=============================== > 'infos sur l'OS utilisé (version, type, etc.)
FxM
Bonsoir Frédéric,
Salut FxM,
Merci d'avance (ainsi qu'à Philippe).
Je te dis ça demain soir après essais.
Nous disons donc : Système : Windows 95 OSR2 Numéro version : [4.0.B] Service Pack : Aucun Service Pack installé (mouais, c'est loin..)
@+ FxM
Bonsoir Frédéric,
Salut FxM,
Merci d'avance (ainsi qu'à Philippe).
Je te dis ça demain soir après essais.
Nous disons donc :
Système : Windows 95 OSR2
Numéro version : [4.0.B]
Service Pack : Aucun Service Pack installé (mouais, c'est loin..)
Nous disons donc : Système : Windows 95 OSR2 Numéro version : [4.0.B] Service Pack : Aucun Service Pack installé (mouais, c'est loin..)
@+ FxM
Philippe.R
Bonsoir Frédéric, Comme promis, même si cela n'apporte rien de bien nouveau :
Système : Windows NT 4.0 Station de travail Numéro version : [4.0.1381] Service Pack : 6.0 -- Amicales Salutations
Retirer A_S_ pour répondre. XL97 / XL2002
"Frédéric Sigonneau" a écrit dans le message de news:
Salut FxM,
Merci d'avance (ainsi qu'à Philippe). Les informations sur la présence d'un Service Pack ne sont pas disponibles sur les systèmes Win 95/98/Me. Le membre szCSDVersion, qui contient cette info dans la structure OSVERSIONINFOEX (cad pour les systèmes basés sur NT), renvoie, dans la version OSVERSIONINFO, une lettre (A, B ou C) qui permet de déterminer la version précise dans certains cas. Pour Windows 98, si szCSDVersion renvoie A, c'est qu'il s'agit de Windows 98 SE.
FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
Bonjour Frédéric,
Au bureau : 2 postes en Win95 & Off2000. Je vais également vérifiéer en Win98SE car j'ai une indication "pas de SP" alors qu'ils ont été appliqués.
@+ FxM
Frédéric Sigonneau wrote:
Bonjour,
Merci de vos réponses. Ça ne semble pas fonctionner avec Windows 98 (première édition). Je vais essayer de trouver une solution avec Clément, s'il est d'accord. Personne n'utilise plus Windows 95, NT 3.xx ?
FS
Bonsoir Frédéric,
Comme promis, même si cela n'apporte rien de bien nouveau :
Système : Windows NT 4.0 Station de travail
Numéro version : [4.0.1381]
Service Pack : 6.0
--
Amicales Salutations
A_S_rauphil@wanadoo.fr
Retirer A_S_ pour répondre.
XL97 / XL2002
"Frédéric Sigonneau" <frederic.sigonneau@wanadoo.fr> a écrit dans le message de
news:3F882803.63985D6A@wanadoo.fr...
Salut FxM,
Merci d'avance (ainsi qu'à Philippe).
Les informations sur la présence d'un Service Pack ne sont pas disponibles sur
les systèmes Win 95/98/Me. Le membre szCSDVersion, qui contient cette info dans
la structure OSVERSIONINFOEX (cad pour les systèmes basés sur NT), renvoie, dans
la version OSVERSIONINFO, une lettre (A, B ou C) qui permet de déterminer la
version précise dans certains cas. Pour Windows 98, si szCSDVersion renvoie A,
c'est qu'il s'agit de Windows 98 SE.
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Bonjour Frédéric,
Au bureau : 2 postes en Win95 & Off2000.
Je vais également vérifiéer en Win98SE car j'ai une indication "pas de
SP" alors qu'ils ont été appliqués.
@+
FxM
Frédéric Sigonneau wrote:
Bonjour,
Merci de vos réponses. Ça ne semble pas fonctionner avec Windows 98 (première
édition). Je vais essayer de trouver une solution avec Clément, s'il est
d'accord.
Personne n'utilise plus Windows 95, NT 3.xx ?
Bonsoir Frédéric, Comme promis, même si cela n'apporte rien de bien nouveau :
Système : Windows NT 4.0 Station de travail Numéro version : [4.0.1381] Service Pack : 6.0 -- Amicales Salutations
Retirer A_S_ pour répondre. XL97 / XL2002
"Frédéric Sigonneau" a écrit dans le message de news:
Salut FxM,
Merci d'avance (ainsi qu'à Philippe). Les informations sur la présence d'un Service Pack ne sont pas disponibles sur les systèmes Win 95/98/Me. Le membre szCSDVersion, qui contient cette info dans la structure OSVERSIONINFOEX (cad pour les systèmes basés sur NT), renvoie, dans la version OSVERSIONINFO, une lettre (A, B ou C) qui permet de déterminer la version précise dans certains cas. Pour Windows 98, si szCSDVersion renvoie A, c'est qu'il s'agit de Windows 98 SE.
FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
Bonjour Frédéric,
Au bureau : 2 postes en Win95 & Off2000. Je vais également vérifiéer en Win98SE car j'ai une indication "pas de SP" alors qu'ils ont été appliqués.
@+ FxM
Frédéric Sigonneau wrote:
Bonjour,
Merci de vos réponses. Ça ne semble pas fonctionner avec Windows 98 (première édition). Je vais essayer de trouver une solution avec Clément, s'il est d'accord. Personne n'utilise plus Windows 95, NT 3.xx ?
FS
Frédéric Sigonneau
Bonsoir,
Avec votre aide, le code a été testé sur un nombre de versions de Windows très significatif, il devrait donc renvoyer un résultat correct dans tous les cas. Merci à tous. (Code final sous ma signature)
FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
'================================ 'infos sur l'OS utilisé (version, type, etc.)
Public Declare Function GetWinVersion Lib "kernel32" Alias "GetVersionExA" _ (lpVersionInformation As OSVERSIONINFO) As Long Public Declare Function GetWinVersionEx Lib "kernel32" Alias "GetVersionExA" _ (lpVersionInformation As OSVERSIONINFOEX) As Long
Public Const VER_PLATFORM_WIN32s = 0 Public Const VER_PLATFORM_WIN32_WINDOWS = 1 Public Const VER_PLATFORM_WIN32_NT = 2
'Structure pour les versions WinDOS Public Type OSVERSIONINFO dwOSVersionInfoSize As Long dwMajorVersion As Long dwMinorVersion As Long dwBuildNumber As Long dwPlatformId As Long szCSDVersion As String * 128 'sous type de certaines versions End Type
'Structure pour les versions WinNT Public Type OSVERSIONINFOEX dwOSVersionInfoSize As Long dwMajorVersion As Long dwMinorVersion As Long dwBuildNumber As Long dwPlatformId As Long szCSDVersion As String * 128 'sous type ou info sur service pack installé wServicePackMajor As Integer wServicePackMinor As Integer wSuiteMask As Integer wProductType As Byte wRest As Byte End Type
Public Sub GetWindowsVersion() Dim oviWinNT As OSVERSIONINFOEX Dim oviWin32 As OSVERSIONINFO Dim strVer As String Dim OS As String Dim OSType As String Dim NumeroVersion As String Dim Detail As String Dim Msg$, SP$
If oviWin32.dwMajorVersion = 4 And oviWin32.dwMinorVersion = 0 Then OS = "Windows 95" If Detail = "A" Then OS = OS & " OSR1" ElseIf Detail = "B" Then OS = OS & " OSR2" End If ElseIf oviWin32.dwMajorVersion = 4 And oviWin32.dwMinorVersion = 3 Then OS = "Windows 95 OSR2" If Detail = "B" Then OS = OS & ".1" ElseIf Detail = "C" Then OS = OS & ".5" End If ElseIf oviWin32.dwMajorVersion = 4 And oviWin32.dwMinorVersion = 10 Then OS = "Windows 98" If Detail = "A" Then OS = OS & " SE (Seconde Édition)" ElseIf oviWin32.dwMajorVersion = 4 And oviWin32.dwMinorVersion = 90 Then OS = "Windows ME (Millenium Édition)" End If NumeroVersion = "[" & oviWin32.dwMajorVersion & "." _ & oviWin32.dwMinorVersion & _ IIf(Asc(Detail) = 0, "", "." & Detail) & "]"
If oviWinNT.dwMajorVersion = 3 And oviWinNT.dwMinorVersion = 0 Then OS = "Windows NT 3.0" ElseIf oviWinNT.dwMajorVersion = 3 And oviWinNT.dwMinorVersion = 1 Then OS = "Windows NT 3.1" ElseIf oviWinNT.dwMajorVersion = 3 And oviWinNT.dwMinorVersion = 51 Then OS = "Windows NT 3.51" ElseIf oviWinNT.dwMajorVersion = 4 Then OS = "Windows NT 4.0" ElseIf oviWinNT.dwMajorVersion = 5 And oviWinNT.dwMinorVersion = 0 Then OS = "Windows 2000" ElseIf oviWinNT.dwMajorVersion = 5 And oviWinNT.dwMinorVersion = 1 Then OS = "Windows XP" ElseIf oviWinNT.dwMajorVersion = 5 And oviWinNT.dwMinorVersion = 2 Then OS = "Windows 2003 Serveur" End If
'De quel type est le produit NT/2000/XP/2003 ? Select Case oviWinNT.wProductType Case VER_NT_WORKSTATION If oviWinNT.dwMajorVersion < 5 Then OSType = "Station de travail" Else If oviWinNT.wSuiteMask And VER_SUITE_PERSONAL Then OSType = "Édition familiale" Else OSType = "Professionnel" End If End If Case VER_NT_DOMAIN_CONTROLLER OSType = "Serveur (Contrôleur de domaine)" Case VER_NT_SERVER If oviWinNT.wSuiteMask And VER_SUITE_DATACENTER Then OSType = "Serveur (Centre de données)" ElseIf oviWinNT.wSuiteMask And VER_SUITE_ENTERPRISE Then If oviWinNT.dwMajorVersion = 5 And oviWinNT.dwMinorVersion = 0 Then OSType = "Serveur avancé" Else OSType = "Edition Entreprise" End If ElseIf oviWinNT.wSuiteMask And VER_SUITE_BLADE Then OSType = "Édition Web" Else OSType = "Serveur" End If End Select
Avec votre aide, le code a été testé sur un nombre de versions de Windows très
significatif, il devrait donc renvoyer un résultat correct dans tous les cas.
Merci à tous.
(Code final sous ma signature)
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
'================================ 'infos sur l'OS utilisé (version, type, etc.)
Public Declare Function GetWinVersion Lib "kernel32" Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFO) As Long
Public Declare Function GetWinVersionEx Lib "kernel32" Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFOEX) As Long
Public Const VER_PLATFORM_WIN32s = 0
Public Const VER_PLATFORM_WIN32_WINDOWS = 1
Public Const VER_PLATFORM_WIN32_NT = 2
'Structure pour les versions WinDOS
Public Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'sous type de certaines versions
End Type
'Structure pour les versions WinNT
Public Type OSVERSIONINFOEX
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'sous type ou info sur service pack installé
wServicePackMajor As Integer
wServicePackMinor As Integer
wSuiteMask As Integer
wProductType As Byte
wRest As Byte
End Type
Public Sub GetWindowsVersion()
Dim oviWinNT As OSVERSIONINFOEX
Dim oviWin32 As OSVERSIONINFO
Dim strVer As String
Dim OS As String
Dim OSType As String
Dim NumeroVersion As String
Dim Detail As String
Dim Msg$, SP$
If oviWin32.dwMajorVersion = 4 And oviWin32.dwMinorVersion = 0 Then
OS = "Windows 95"
If Detail = "A" Then
OS = OS & " OSR1"
ElseIf Detail = "B" Then
OS = OS & " OSR2"
End If
ElseIf oviWin32.dwMajorVersion = 4 And oviWin32.dwMinorVersion = 3 Then
OS = "Windows 95 OSR2"
If Detail = "B" Then
OS = OS & ".1"
ElseIf Detail = "C" Then
OS = OS & ".5"
End If
ElseIf oviWin32.dwMajorVersion = 4 And oviWin32.dwMinorVersion = 10 Then
OS = "Windows 98"
If Detail = "A" Then OS = OS & " SE (Seconde Édition)"
ElseIf oviWin32.dwMajorVersion = 4 And oviWin32.dwMinorVersion = 90 Then
OS = "Windows ME (Millenium Édition)"
End If
NumeroVersion = "[" & oviWin32.dwMajorVersion & "." _
& oviWin32.dwMinorVersion & _
IIf(Asc(Detail) = 0, "", "." & Detail) & "]"
If oviWinNT.dwMajorVersion = 3 And oviWinNT.dwMinorVersion = 0 Then
OS = "Windows NT 3.0"
ElseIf oviWinNT.dwMajorVersion = 3 And oviWinNT.dwMinorVersion = 1 Then
OS = "Windows NT 3.1"
ElseIf oviWinNT.dwMajorVersion = 3 And oviWinNT.dwMinorVersion = 51 Then
OS = "Windows NT 3.51"
ElseIf oviWinNT.dwMajorVersion = 4 Then
OS = "Windows NT 4.0"
ElseIf oviWinNT.dwMajorVersion = 5 And oviWinNT.dwMinorVersion = 0 Then
OS = "Windows 2000"
ElseIf oviWinNT.dwMajorVersion = 5 And oviWinNT.dwMinorVersion = 1 Then
OS = "Windows XP"
ElseIf oviWinNT.dwMajorVersion = 5 And oviWinNT.dwMinorVersion = 2 Then
OS = "Windows 2003 Serveur"
End If
'De quel type est le produit NT/2000/XP/2003 ?
Select Case oviWinNT.wProductType
Case VER_NT_WORKSTATION
If oviWinNT.dwMajorVersion < 5 Then
OSType = "Station de travail"
Else
If oviWinNT.wSuiteMask And VER_SUITE_PERSONAL Then
OSType = "Édition familiale"
Else
OSType = "Professionnel"
End If
End If
Case VER_NT_DOMAIN_CONTROLLER
OSType = "Serveur (Contrôleur de domaine)"
Case VER_NT_SERVER
If oviWinNT.wSuiteMask And VER_SUITE_DATACENTER Then
OSType = "Serveur (Centre de données)"
ElseIf oviWinNT.wSuiteMask And VER_SUITE_ENTERPRISE Then
If oviWinNT.dwMajorVersion = 5 And oviWinNT.dwMinorVersion = 0 Then
OSType = "Serveur avancé"
Else
OSType = "Edition Entreprise"
End If
ElseIf oviWinNT.wSuiteMask And VER_SUITE_BLADE Then
OSType = "Édition Web"
Else
OSType = "Serveur"
End If
End Select
Avec votre aide, le code a été testé sur un nombre de versions de Windows très significatif, il devrait donc renvoyer un résultat correct dans tous les cas. Merci à tous. (Code final sous ma signature)
FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
'================================ 'infos sur l'OS utilisé (version, type, etc.)
Public Declare Function GetWinVersion Lib "kernel32" Alias "GetVersionExA" _ (lpVersionInformation As OSVERSIONINFO) As Long Public Declare Function GetWinVersionEx Lib "kernel32" Alias "GetVersionExA" _ (lpVersionInformation As OSVERSIONINFOEX) As Long
Public Const VER_PLATFORM_WIN32s = 0 Public Const VER_PLATFORM_WIN32_WINDOWS = 1 Public Const VER_PLATFORM_WIN32_NT = 2
'Structure pour les versions WinDOS Public Type OSVERSIONINFO dwOSVersionInfoSize As Long dwMajorVersion As Long dwMinorVersion As Long dwBuildNumber As Long dwPlatformId As Long szCSDVersion As String * 128 'sous type de certaines versions End Type
'Structure pour les versions WinNT Public Type OSVERSIONINFOEX dwOSVersionInfoSize As Long dwMajorVersion As Long dwMinorVersion As Long dwBuildNumber As Long dwPlatformId As Long szCSDVersion As String * 128 'sous type ou info sur service pack installé wServicePackMajor As Integer wServicePackMinor As Integer wSuiteMask As Integer wProductType As Byte wRest As Byte End Type
Public Sub GetWindowsVersion() Dim oviWinNT As OSVERSIONINFOEX Dim oviWin32 As OSVERSIONINFO Dim strVer As String Dim OS As String Dim OSType As String Dim NumeroVersion As String Dim Detail As String Dim Msg$, SP$
If oviWin32.dwMajorVersion = 4 And oviWin32.dwMinorVersion = 0 Then OS = "Windows 95" If Detail = "A" Then OS = OS & " OSR1" ElseIf Detail = "B" Then OS = OS & " OSR2" End If ElseIf oviWin32.dwMajorVersion = 4 And oviWin32.dwMinorVersion = 3 Then OS = "Windows 95 OSR2" If Detail = "B" Then OS = OS & ".1" ElseIf Detail = "C" Then OS = OS & ".5" End If ElseIf oviWin32.dwMajorVersion = 4 And oviWin32.dwMinorVersion = 10 Then OS = "Windows 98" If Detail = "A" Then OS = OS & " SE (Seconde Édition)" ElseIf oviWin32.dwMajorVersion = 4 And oviWin32.dwMinorVersion = 90 Then OS = "Windows ME (Millenium Édition)" End If NumeroVersion = "[" & oviWin32.dwMajorVersion & "." _ & oviWin32.dwMinorVersion & _ IIf(Asc(Detail) = 0, "", "." & Detail) & "]"
If oviWinNT.dwMajorVersion = 3 And oviWinNT.dwMinorVersion = 0 Then OS = "Windows NT 3.0" ElseIf oviWinNT.dwMajorVersion = 3 And oviWinNT.dwMinorVersion = 1 Then OS = "Windows NT 3.1" ElseIf oviWinNT.dwMajorVersion = 3 And oviWinNT.dwMinorVersion = 51 Then OS = "Windows NT 3.51" ElseIf oviWinNT.dwMajorVersion = 4 Then OS = "Windows NT 4.0" ElseIf oviWinNT.dwMajorVersion = 5 And oviWinNT.dwMinorVersion = 0 Then OS = "Windows 2000" ElseIf oviWinNT.dwMajorVersion = 5 And oviWinNT.dwMinorVersion = 1 Then OS = "Windows XP" ElseIf oviWinNT.dwMajorVersion = 5 And oviWinNT.dwMinorVersion = 2 Then OS = "Windows 2003 Serveur" End If
'De quel type est le produit NT/2000/XP/2003 ? Select Case oviWinNT.wProductType Case VER_NT_WORKSTATION If oviWinNT.dwMajorVersion < 5 Then OSType = "Station de travail" Else If oviWinNT.wSuiteMask And VER_SUITE_PERSONAL Then OSType = "Édition familiale" Else OSType = "Professionnel" End If End If Case VER_NT_DOMAIN_CONTROLLER OSType = "Serveur (Contrôleur de domaine)" Case VER_NT_SERVER If oviWinNT.wSuiteMask And VER_SUITE_DATACENTER Then OSType = "Serveur (Centre de données)" ElseIf oviWinNT.wSuiteMask And VER_SUITE_ENTERPRISE Then If oviWinNT.dwMajorVersion = 5 And oviWinNT.dwMinorVersion = 0 Then OSType = "Serveur avancé" Else OSType = "Edition Entreprise" End If ElseIf oviWinNT.wSuiteMask And VER_SUITE_BLADE Then OSType = "Édition Web" Else OSType = "Serveur" End If End Select