Informations système

Soyez le premier à donner votre avis sur cette source.

Vue 4 907 fois - Téléchargée 521 fois

Description

Classe pour récupérer quelques informations système.
- Version de windows (à partir de windows 95 et windows NT 3.5)
- présence de Terminal serveur
- version de DCOM (ne marche que sur les versions de windows où non présent par défaut)
- version Windows Installer
- version Internet Explorer
- version MDAC
- version MS Jet
Plus quelques informations diverses:
- Chemin du dossier temporaire
- Espace libre sur l'unité contenant le dossier temporaire
- résolution et nombre de couleurs de l'affichage

Certaines de ces fonctions sont disponible par d'autre moyen mais l'avantage de cette classe, c'est qu'elle est autonome, qu'elle n'a pas besoin d'autre composant (autre que les quelques DLL minimale de VB6). Petit « plus », quand j’ai réussi à trouver les informations, elle traduit le numéro de version. Par exemple, si elle trouve Windows installer v4.5.6001.22159, elle donnera en plus du numéro de version brut un texte sous la forme « 4.5 (Redistribuable Windows XP/Server 2003) ». Normalement les données sont assez à jours, à part pour tout ce qui touche à Seven et ses composants associés, ou elle ne pourra donner que des numéros de version sous forme brute

Cette classe faisant partie à l'origine d'un projet de diagnostic plus vaste, j'ai rapatrié toutes les fonctions dans modFonctions. Malgré une relecture de ma part, je ne garantie pas qu'il n'y est pas des déclarations public là où un private aurait suffit.

nb: Les classes RegistryHandler (et son module) et VersionInfo ne sont pas de moi et contienne les informations sur leurs auteurs respectif, si ces informations étaient présentes.

Source / Exemple :


Option Explicit

Private clsRegistre As RegistryHandler

Private Const cstMsi = "Msi.Dll"

Private Const cstDcom = "Ole32.Dll"

Private Const cstJet4 = "msjet40.dll"

Private strAffichageCouleur As String

Private strAffichageResolution As String

Private blnDcomPresent As Boolean

Private strDcomVersion As String

Private blnIEPresent As Boolean

Private strIEVersion As String

Private blnImprimantePresent As Boolean

Private strImprimanteInfo As String

Private blnJetPresent As Boolean

Private strJetVersion As String

Private blnMdacPresent As Boolean

Private strMdacVersion As String

Private blnMsiPresent As Boolean

Private strMsiVersion As String

Private strWindowsVersion As String

Private blnTerminalServicePresent As Boolean

Private blnIsWin2K As Boolean

Private blnIsWin32s As Boolean

Private blnIsWin95 As Boolean

Private blnIsWin98 As Boolean

Private blnIsWin98SE As Boolean

Private blnIsWin98ME As Boolean

Private blnIsWin9x As Boolean

Private blnIsWinNT As Boolean

Private blnIsWinNT3 As Boolean

Private blnIsWinNT4 As Boolean

Private blnIsWinNT5 As Boolean

Private blnIsWinNT6 As Boolean

Private blnIsWinServer As Boolean

Private blnIsWinXP As Boolean

Private blnIsWinCE As Boolean

Private blnIsWinVista As Boolean

Private blnIsWin7 As Boolean

Private blnIsWinMediaCenter As Boolean

Private blnIsWin2003 As Boolean

Private blnIsWinHomeServer As Boolean

Private blnIsWin2008 As Boolean

Private blnIsWin64bit As Boolean

Private strRepertoireTemporaire As String

Private dblEspaceDisqueTemporaire As Double

Private Sub AffiCouleur()

    Dim lngBits As Long
    Dim lngPlanes As Long
    Dim lwndHandle As Long

    lwndHandle = GetDC(0)
    'bits per pixel
    lngBits = GetDeviceCaps(lwndHandle, BITSPIXEL)
    'number of color planes
    lngPlanes = GetDeviceCaps(lwndHandle, PLANES)
    'maximum colors available
    strAffichageCouleur = CStr(2 ^ (lngBits * lngPlanes))

End Sub

Private Sub AffiResolution()

    Dim ScreenPixelWidth As Integer
    Dim ScreenPixelHeight As Integer

    ScreenPixelWidth = Screen.Width \ Screen.TwipsPerPixelX
    ScreenPixelHeight = Screen.Height \ Screen.TwipsPerPixelY
    strAffichageResolution = CStr(ScreenPixelWidth) & " X " & CStr(ScreenPixelHeight)

End Sub

Private Sub EspaceLbrDisqTemp()

    dblEspaceDisqueTemporaire = EspaceDisqueLibre(strRepertoireTemporaire)

End Sub

Private Sub InfoImprimante()

    Dim strTemp As String

    Err.Clear
    On Error Resume Next
    strTemp = Printer.DeviceName

    If Err.Number <> 0 Then
        blnImprimantePresent = False
        strImprimanteInfo = cstNonInstalle
    Else
        blnImprimantePresent = True
        strImprimanteInfo = Printer.DeviceName & cstSeparGauche & Printer.DriverName & cstSeparDroite
    End If

    On Error GoTo 0

End Sub

Private Sub InfoJet()

    Dim varTemp As Variant
    Dim strInfo As String
    Dim I As Integer

    strInfo = vbNullString
    varTemp = clsRegistre.EnumKeys(HKEY_LOCAL_MACHINE, "Software\Microsoft\Jet")

    If varTemp(0) = vbNullString Then
        blnJetPresent = False
        strJetVersion = cstNonInstalle
    Else

        For I = 0 To UBound(varTemp)

            If Left$(varTemp(I), 2) = "4." Then
                If strInfo = vbNullString Then
                    strInfo = varTemp(I) & cstSeparGauche & InfoVersionDllSys(cstJet4) & cstSeparDroite
                Else
                    strInfo = strInfo & ", " & varTemp(I) & cstSeparGauche & InfoVersionDllSys(cstJet4) & cstSeparDroite
                End If

            Else

                If strInfo = vbNullString Then
                    strInfo = varTemp(I)
                Else
                    strInfo = strInfo & ", " & varTemp(I)
                End If
            End If

        Next

        strJetVersion = strInfo
        blnJetPresent = True
    End If

End Sub

Private Function InfoVersion64bit() As String

    Dim lngRet As Long
    Dim strTemp As String
    Dim Si As SYSTEM_INFO

    blnIsWin64bit = False
'    If APIFunctionPresent("IsWow64Process", "kernel32") Then
'        IsWow64Process GetCurrentProcess, lngRet
'
'            If lngRet <> 0 Then
    If APIFunctionPresent("GetNativeSystemInfo", "kernel32") Then  'N'existe qu'à partir d'XP => vérif au cas où 2000 demande
        GetNativeSystemInfo Si
        If Si.wProcessorArchitecture = PROCESSOR_ARCHITECTURE_AMD64 Then
                strTemp = " 64bits"
                blnIsWin64bit = True
         End If
    End If

    InfoVersion64bit = strTemp

End Function

Private Sub InfoVersionDCOM()

    Dim strRegRecup As String

    If APIFunctionPresent("CoCreateInstanceEx", cstDcom) Then
        strRegRecup = clsRegistre.GetRegValue(HKEY_CLASSES_ROOT, "CLSID\{bdc67890-4fc0-11d0-a805-00aa006d2ea4}\InstalledVersion", "")
        blnDcomPresent = True

        If strRegRecup <> vbNullString Then
            strDcomVersion = strRegRecup
        End If

    Else
        blnDcomPresent = False
        strDcomVersion = cstNonInstalle
    End If

End Sub

Private Sub InfoVersionIE()

    Dim strVersion As String
    Dim strBuild As String

    strVersion = clsRegistre.GetRegValue(HKEY_LOCAL_MACHINE, "Software\Microsoft\Internet Explorer", "Version")

    If strVersion = vbNullString Then
        strVersion = clsRegistre.GetRegValue(HKEY_LOCAL_MACHINE, "Software\Microsoft\Internet Explorer", "IVer")

        If strVersion = vbNullString Then
            blnIEPresent = False
            strIEVersion = cstNonInstalle
        Else
            blnIEPresent = True

            Select Case strVersion

                Case "100"
                    strIEVersion = "1 [IVer " & strVersion & cstSeparDroite

                Case "101"
                    strIEVersion = "Fournit avec Windows NT 4 [IVer " & strVersion & cstSeparDroite

                Case "102"
                    strIEVersion = "2 [IVer " & strVersion & cstSeparDroite

                Case "103"
                    strBuild = clsRegistre.GetRegValue(HKEY_LOCAL_MACHINE, "Software\Microsoft\Internet Explorer", "Build")

                    Select Case strBuild

                        Case "1155"
                            strIEVersion = "3 [IVer " & strVersion & " Build " & strBuild & cstSeparDroite

                        Case "1158"
                            strIEVersion = "3 OSR2 [IVer " & strVersion & " Build " & strBuild & cstSeparDroite

                        Case "1215"
                            strIEVersion = "3.01 [IVer " & strVersion & " Build " & strBuild & cstSeparDroite

                        Case "1300"
                            strIEVersion = "3.02 ou 3.02a [IVer " & strVersion & " Build " & strBuild & cstSeparDroite

                        Case Else
                            strIEVersion = "IVer " & strVersion & " Build " & strBuild & ""
                    End Select

                Case Else
                    strIEVersion = "IVer " & strVersion
            End Select

        End If

    Else
        blnIEPresent = True
        strIEVersion = TraduitIEVersion(strVersion)
    End If

End Sub

Private Sub InfoVersionMDAC()

    Dim strVersion As String

    strVersion = clsRegistre.GetRegValue(HKEY_LOCAL_MACHINE, "Software\Microsoft\DataAccess", "FullInstallVer")

    If strVersion = vbNullString Then
        blnMdacPresent = False
        strMdacVersion = cstNonInstalle
    Else
        blnMdacPresent = True
        strMdacVersion = TraduitMDACVersion(strVersion)
    End If

End Sub

Private Sub InfoVersionMSI()

    Dim strVersion As String

    strVersion = vbNullString
    strVersion = InfoVersionDllSys(cstMsi)

    If strVersion <> vbNullString Then
        blnMsiPresent = True
        strMsiVersion = TraduitMSIVersion(strVersion)
    Else
        blnMsiPresent = False
        strMsiVersion = strVersion
    End If

End Sub

Private Function InfoVersionMediaCenter() As String

    Dim strTemp As String

    strTemp = vbNullString

    If GetSystemMetrics(SM_MEDIACENTER) <> 0 Then
        blnIsWinMediaCenter = True
        strTemp = " Media Center"
    End If

    InfoVersionMediaCenter = strTemp

End Function

Private Function InfoVersionWinEx() As String

    Dim OSinfo As OSVERSIONINFOEX
    Dim SysInfo As SYSTEM_INFO
    Dim RetValue As Long
    Dim RetProdType As Long

    OSinfo.dwOSVersionInfoSize = Len(OSinfo)
    OSinfo.szCSDVersion = Space$(128)
    RetValue = GetVersionEx(OSinfo)

    With OSinfo
        blnIsWinNT = True

        Select Case .dwMajorVersion

            Case 6
                blnIsWinNT6 = True
                Select Case .dwMinorVersion
                Case 0
                    If .bProductType = VER_NT_WORKSTATION Then
                        blnIsWinVista = True
                        strWindowsVersion = "Windows Vista"
                    Else
                        blnIsWin2008 = True
                        strWindowsVersion = "Windows Server 2008"
                    End If
                Case 1
                    blnIsWin7 = True
                    Select Case .dwBuildNumber
                    Case 6801
                        strWindowsVersion = "Windows 7 preBeta build M3 PDC 2008"
                    Case Else
                        strWindowsVersion = "Windows 7"
                    End Select
                Case Else
                    strWindowsVersion = "Windows NT v" & Str$(.dwMajorVersion) & "." & Str$(.dwMinorVersion)
                End Select
                strWindowsVersion = strWindowsVersion & InfoVersion64bit

                Call GetProductInfo(.dwMajorVersion, .dwMinorVersion, .wSPMajor, .wSPMinor, RetProdType)
                Select Case RetProdType
                Case PRODUCT_BUSINESS
                    strWindowsVersion = strWindowsVersion & " Business"
                Case PRODUCT_BUSINESS_N
                    strWindowsVersion = strWindowsVersion & " Business N"
                Case PRODUCT_CLUSTER_SERVER
                    strWindowsVersion = strWindowsVersion & " HPC"
                Case PRODUCT_DATACENTER_SERVER
                    strWindowsVersion = strWindowsVersion & " Datacenter"
                Case PRODUCT_DATACENTER_SERVER_CORE
                    strWindowsVersion = strWindowsVersion & " Datacenter (core installation)"
                Case PRODUCT_DATACENTER_SERVER_CORE_V
                    strWindowsVersion = strWindowsVersion & " Datacenter sans Hyper-V(core installation)"
                Case PRODUCT_DATACENTER_SERVER_V
                    strWindowsVersion = strWindowsVersion & " Datacenter sans Hyper-V"
                Case PRODUCT_ENTERPRISE
                    strWindowsVersion = strWindowsVersion & " Enterprise"
                Case PRODUCT_ENTERPRISE_N
                    strWindowsVersion = strWindowsVersion & " Enterprise N"
                Case PRODUCT_ENTERPRISE_SERVER
                    strWindowsVersion = strWindowsVersion & " Server Enterprise"
                Case PRODUCT_ENTERPRISE_SERVER_CORE
                    strWindowsVersion = strWindowsVersion & " Server Enterprise (core installation)"
                Case PRODUCT_ENTERPRISE_SERVER_CORE_V
                    strWindowsVersion = strWindowsVersion & " Server Enterprise sans Hyper-V(core installation)"
                Case PRODUCT_ENTERPRISE_SERVER_IA64
                    strWindowsVersion = strWindowsVersion & " Enterprise pour Itanium"
                Case PRODUCT_ENTERPRISE_SERVER_V
                    strWindowsVersion = strWindowsVersion & " Server Enterprise sans Hyper-V"
                Case PRODUCT_HOME_BASIC
                    strWindowsVersion = strWindowsVersion & " Home Basic"
                Case PRODUCT_HOME_BASIC_N
                    strWindowsVersion = strWindowsVersion & " Home Basic N"
                Case PRODUCT_HOME_PREMIUM
                    strWindowsVersion = strWindowsVersion & " Home Premium"
                Case PRODUCT_HOME_PREMIUM_N
                    strWindowsVersion = strWindowsVersion & " Home Premium N"
                Case PRODUCT_HYPERV
                    strWindowsVersion = strWindowsVersion & " Microsoft Hyper-V Server"
                Case PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT
                    strWindowsVersion = strWindowsVersion & " Essential Business Server Management Server"
                Case PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING
                    strWindowsVersion = strWindowsVersion & " Essential Business Server Messaging Server"
                Case PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY
                    strWindowsVersion = strWindowsVersion & " Essential Business Server Security Server"
                Case PRODUCT_SERVER_FOR_SMALLBUSINESS
                    strWindowsVersion = strWindowsVersion & " Windows Essential Server Solutions"
                Case PRODUCT_SERVER_FOR_SMALLBUSINESS_V
                    strWindowsVersion = strWindowsVersion & " Windows Essential Server Solutions sans Hyper-V"
                Case PRODUCT_SMALLBUSINESS_SERVER
                    strWindowsVersion = strWindowsVersion & " Small Business Server"
                Case PRODUCT_STANDARD_SERVER
                    strWindowsVersion = strWindowsVersion & " Standard"
                Case PRODUCT_STANDARD_SERVER_CORE
                    strWindowsVersion = strWindowsVersion & " Standard (core installation)"
                Case PRODUCT_STANDARD_SERVER_CORE_V
                    strWindowsVersion = strWindowsVersion & " Standard sans Hyper-V(core installation)"
                Case PRODUCT_STANDARD_SERVER_V
                    strWindowsVersion = strWindowsVersion & " Standard sans Hyper-V"
                Case PRODUCT_STARTER
                    strWindowsVersion = strWindowsVersion & " Starter"
                Case PRODUCT_STORAGE_ENTERPRISE_SERVER
                    strWindowsVersion = strWindowsVersion & " Storage Server Enterprise"
                Case PRODUCT_STORAGE_EXPRESS_SERVER
                    strWindowsVersion = strWindowsVersion & " Storage Server Express"
                Case PRODUCT_STORAGE_STANDARD_SERVER
                    strWindowsVersion = strWindowsVersion & " Storage Server Standard"
                Case PRODUCT_STORAGE_WORKGROUP_SERVER
                    strWindowsVersion = strWindowsVersion & " Storage Server Workgroup"
                Case PRODUCT_ULTIMATE
                    strWindowsVersion = strWindowsVersion & " Ultimate"
                Case PRODUCT_ULTIMATE_N
                    strWindowsVersion = strWindowsVersion & " Ultimate N"
                Case PRODUCT_WEB_SERVER
                    strWindowsVersion = strWindowsVersion & " Web Server"
                Case PRODUCT_WEB_SERVER_CORE
                    strWindowsVersion = strWindowsVersion & " Web Server(core installation)"
                Case PRODUCT_UNDEFINED
                    strWindowsVersion = strWindowsVersion & " Produit inconnu"
                End Select
                strWindowsVersion = strWindowsVersion & " (" & InfoVersionMediaCenter & ")"

            Case 5
                blnIsWinNT5 = True
                Select Case .dwMinorVersion

                    Case 0
                        blnIsWin2K = True
                        strWindowsVersion = "Windows 2000"

                        If .bProductType = VER_NT_WORKSTATION Then
                            If .wSuiteMask And VER_SUITE_PERSONAL Then
                                strWindowsVersion = strWindowsVersion & " Home Edition"
                            Else
                                strWindowsVersion = strWindowsVersion & " Professionel"
                            End If
                        Else
                            blnIsWinServer = True
                            If .wSuiteMask And VER_SUITE_DATACENTER Then
                                strWindowsVersion = strWindowsVersion & " DataCenter Server "
                            ElseIf .wSuiteMask And VER_SUITE_ENTERPRISE Then
                                strWindowsVersion = strWindowsVersion & " Advanced Server "
                            Else
                                strWindowsVersion = strWindowsVersion & " Server "
                            End If
                        End If

                    Case 1
                        blnIsWinXP = True
                        strWindowsVersion = "Windows XP"
                        If .wSuiteMask And VER_SUITE_PERSONAL Then
                            strWindowsVersion = strWindowsVersion & " Home Edition"
                        Else
                            strWindowsVersion = strWindowsVersion & " Professionel"
                        End If

                    Case 2
                        If GetSystemMetrics(SM_SERVERR2) <> 0 Then
                            blnIsWin2003 = True
                            If .bProductType = VER_SUITE_STORAGE_SERVER Then
                                strWindowsVersion = "Windows Storage Server 2003 R2"
                            Else
                                strWindowsVersion = "Windows Server 2003 R2"
                            End If
                        ElseIf .bProductType = VER_SUITE_WH_SERVER Then
                            blnIsWinHomeServer = True
                            strWindowsVersion = "Windows Home Server"
                        ElseIf .bProductType = VER_SUITE_STORAGE_SERVER Then
                            blnIsWin2003 = True
                            strWindowsVersion = "Windows Storage Server 2003"
                        ElseIf .bProductType = VER_NT_WORKSTATION And IsWin64bit Then
                            blnIsWinXP = True
                            strWindowsVersion = "Microsoft Windows XP Professional x64 Edition"
                        Else
                            blnIsWin2003 = True
                            strWindowsVersion = "Windows Server 2003"
                        End If
                        If .bProductType <> VER_NT_WORKSTATION Then
                            GetNativeSystemInfo SysInfo
                            If SysInfo.wProcessorArchitecture = PROCESSOR_ARCHITECTURE_IA64 Then
                                If .wSuiteMask And VER_SUITE_DATACENTER Then
                                    strWindowsVersion = strWindowsVersion & " Datacenter Edition pour Itanium"
                                ElseIf .wSuiteMask And VER_SUITE_ENTERPRISE Then
                                    strWindowsVersion = strWindowsVersion & " Enterprise Edition pour Itanium"
                                End If
                            ElseIf SysInfo.wProcessorArchitecture = PROCESSOR_ARCHITECTURE_AMD64 Then
                                If .wSuiteMask And VER_SUITE_DATACENTER Then
                                    strWindowsVersion = strWindowsVersion & " Datacenter x64 Edition"
                                ElseIf .wSuiteMask And VER_SUITE_ENTERPRISE Then
                                    strWindowsVersion = strWindowsVersion & " Enterprise x64 Edition"
                                Else
                                    strWindowsVersion = strWindowsVersion & " Standard x64 Edition"
                                End If
                            Else
                                If .wSuiteMask And VER_SUITE_DATACENTER Then
                                    strWindowsVersion = strWindowsVersion & " Datacenter Edition"
                                ElseIf .wSuiteMask And VER_SUITE_ENTERPRISE Then
                                    strWindowsVersion = strWindowsVersion & " Enterprise Edition"
                                ElseIf .wSuiteMask And VER_SUITE_COMPUTE_SERVER Then
                                    strWindowsVersion = strWindowsVersion & " Compute Cluster Edition"
                                ElseIf .wSuiteMask And VER_SUITE_BLADE Then
                                    strWindowsVersion = strWindowsVersion & " Web Edition"
                                Else
                                    strWindowsVersion = strWindowsVersion & " Standard Edition"
                                End If
                            End If
                        End If
                    Case Else
                        strWindowsVersion = "Windows NT v" & Str$(.dwMajorVersion) & "." & Str$(.dwMinorVersion)
                End Select

                strWindowsVersion = strWindowsVersion & InfoVersion64bit
                strWindowsVersion = strWindowsVersion & InfoVersionMediaCenter

            Case Else
                strWindowsVersion = "Windows NT v" & Str$(.dwMajorVersion) & "." & Str$(.dwMinorVersion) & "." & Str$(.dwBuildNumber)
                If .dwMajorVersion = 4 And .bProductType = VER_NT_WORKSTATION Then
                    strWindowsVersion = strWindowsVersion & " Workstation"
                End If
        End Select

        If .wSPMajor > 0 Then
            strWindowsVersion = strWindowsVersion & " Service Pack " & Str$(.wSPMajor)

            If .wSPMinor > 0 Then
                strWindowsVersion = strWindowsVersion & "." & Str$(.wSPMinor)
            End If
        End If

        If .wSuiteMask And VER_SUITE_TERMINAL Then
            blnTerminalServicePresent = True
        End If

        strWindowsVersion = strWindowsVersion & cstSeparGauche & Str$(.dwMajorVersion) & "." & Str$(.dwMinorVersion) & "." & Str$(.dwBuildNumber) & cstSeparDroite

    End With

End Function

Private Sub InfoVersionWinStd()

    Dim OSinfo As OSVERSIONINFO
    Dim strPssInfo As String
    Dim RetValue As Long

    OSinfo.dwOSVersionInfoSize = Len(OSinfo)
    OSinfo.szCSDVersion = Space$(128)
    RetValue = GetVersion(OSinfo)

    With OSinfo
        .dwBuildNumber = LOWORD(.dwBuildNumber)

        Select Case .dwPlatformId

            Case VER_PLATFORM_WIN32_WINDOWS

                blnIsWin9x = True

                Select Case .dwMinorVersion

                    Case 0
                        blnIsWin95 = True

                        Select Case .dwBuildNumber

                            Case 950
                                strWindowsVersion = "Windows 95"

                            Case 1111
                                strWindowsVersion = "Windows 95 SR2.5"

                            Case Else
                                strWindowsVersion = "Windows 95 SR2"
                        End Select
                    Case 3
                        blnIsWin95 = True
                        strWindowsVersion = "Windows 95 SR2.x"

                    Case 10

                        If .dwBuildNumber = 2222 Then
                            blnIsWin98SE = True
                            strWindowsVersion = "Windows 98 Second Edition"
                        Else
                            blnIsWin98 = True
                            strWindowsVersion = "Windows 98"
                        End If

                    Case 90
                        blnIsWin98ME = True
                        strWindowsVersion = "Windows Me (Millenium)"

                    Case Else
                        strWindowsVersion = "Windows v" & Str$(.dwMajorVersion) & "." & Str$(.dwMinorVersion) & "." & Str$(.dwBuildNumber)
                End Select

            Case VER_PLATFORM_WIN32_NT
                blnIsWinNT = True

                Select Case .dwMajorVersion

                    Case 3
                        blnIsWinNT3 = True

                        Select Case .dwMinorVersion

                            Case 0
                                strWindowsVersion = "Windows NT 3"

                            Case 1
                                strWindowsVersion = "Windows NT 3.1"

                            Case 51
                                strWindowsVersion = "Windows NT 3.51"

                            Case Else
                                strWindowsVersion = "Windows NT"
                        End Select

                    Case 4
                        blnIsWinNT4 = True
                        strWindowsVersion = "Windows NT 4.0"

                    Case 5 'Gérer dans InfoVersionWinEx

                    Case Else
                        strWindowsVersion = "Windows NT v" & Str$(.dwMajorVersion) & "." & Str$(.dwMinorVersion) & "." & Str$(.dwBuildNumber)
                End Select

                Select Case UCase$(clsRegistre.GetRegValue(HKEY_LOCAL_MACHINE, "SYSTEM\CurrentControlSet\Control\ProductOptions", "ProductType"))

                    Case "WINNT"
                        strWindowsVersion = strWindowsVersion & " Professional "

                    Case "LANMANNT"
                        blnIsWinServer = True
                        strWindowsVersion = strWindowsVersion & " Server "

                    Case "SERVERNT"
                        blnIsWinServer = True
                        strWindowsVersion = strWindowsVersion & " Advanced Server "
                End Select

            Case VER_PLATFORM_WIN32s
                blnIsWin32s = True
                strWindowsVersion = "Win32s"

            Case VER_PLATFORM_WIN32_CE

            Case Else
                strWindowsVersion = "ERROR"
        End Select

        strPssInfo = .szCSDVersion

        If Len(strPssInfo) > 0 Then
            If InStr(strPssInfo, Chr$(0)) > 0 Then
                strPssInfo = Left$(strPssInfo, InStr(strPssInfo, Chr$(0)) - 1)
            End If

            If strPssInfo <> " A " And strPssInfo <> " B " And strPssInfo <> " C " Then 'A=win98 SE, B et C=Win95 sr2
                strWindowsVersion = strWindowsVersion & strPssInfo
            End If
        End If

    End With

End Sub

Private Sub InfoVersionWindows()

    If IsWinSuppNT4 Then 'Ca marche avec NT4 sp6 mais bon
        InfoVersionWinEx
    Else
        InfoVersionWinStd
    End If

End Sub

Private Sub IniVariables()

    Set clsRegistre = New RegistryHandler

    strAffichageCouleur = vbNullString
    strAffichageResolution = vbNullString
    blnDcomPresent = False
    strDcomVersion = vbNullString
    blnIEPresent = False
    strIEVersion = vbNullString
    blnImprimantePresent = False
    strImprimanteInfo = vbNullString
    blnJetPresent = False
    strJetVersion = vbNullString
    blnMdacPresent = False
    strMdacVersion = vbNullString
    blnMsiPresent = False
    strMsiVersion = vbNullString
    strWindowsVersion = vbNullString
    blnIsWin2K = False
    blnIsWin32s = False
    blnIsWin95 = False
    blnIsWin98 = False
    blnIsWin98SE = False
    blnIsWin98ME = False
    blnIsWin9x = False
    blnIsWinNT = False
    blnIsWinNT3 = False
    blnIsWinNT4 = False
    blnIsWinNT5 = False
    blnIsWinNT6 = False
    blnIsWinServer = False
    blnIsWinXP = False
    blnIsWinVista = False
    blnIsWin7 = False
    blnIsWinCE = False
    blnIsWinMediaCenter = False
    blnIsWin64bit = False
    blnIsWin2003 = False
    blnIsWinHomeServer = False
    blnIsWin2008 = False
    strRepertoireTemporaire = vbNullString
    dblEspaceDisqueTemporaire = 0
    blnTerminalServicePresent = False

End Sub

Private Function IsWinSuppNT4() As Boolean

    Dim OSinfo As OSVERSIONINFO
    Dim RetValue As Long

    OSinfo.dwOSVersionInfoSize = Len(OSinfo)
    OSinfo.szCSDVersion = Space$(128)
    RetValue = GetVersion(OSinfo)

    If OSinfo.dwPlatformId = VER_PLATFORM_WIN32_NT And OSinfo.dwMajorVersion > 4 Then
        IsWinSuppNT4 = True
    Else
        IsWinSuppNT4 = False
    End If

End Function

Private Function LOWORD(ByVal lData As Long) As Long

    If (lData And &HFFFF&) > &H7FFF& Then
        lData = lData - &H10000
    Else
        lData = lData And &HFFFF&
    End If

    LOWORD = lData

End Function

Private Sub RepertoireTemp()

    strRepertoireTemporaire = GetTemporaireDir

End Sub

Private Function TraduitIEVersion(strVers As String) As String

    Dim strTexte As String
    Dim strMonTableauTemp() As String
    Dim intMonTableau(0 To 3) As Integer
    Dim I As Byte

    strMonTableauTemp = Split(strVers, ".")
    ReDim Preserve strMonTableauTemp(0 To 3)
    For I = 0 To 3
        If strMonTableauTemp(I) = vbNullString Then
            intMonTableau(I) = 0
        Else
            intMonTableau(I) = CInt(strMonTableauTemp(I))
        End If
    Next
    Erase strMonTableauTemp

    strTexte = vbNullString

    Select Case intMonTableau(0)
    Case 4
        Select Case intMonTableau(1)
        Case 40
            Select Case intMonTableau(2)
            Case 308
                strTexte = "1.0 (Plus!)"
            Case 420
                strTexte = "2.0"
            End Select
        Case 70
            Select Case intMonTableau(2)
            Case 1155
                strTexte = "3.0"
            Case 1158
                strTexte = "3.0 (OSR2)"
            Case 1215
                strTexte = "3.01"
            Case 1300
                strTexte = "3.02 ou 3.02a"
            End Select
        Case 71
            Select Case intMonTableau(2)
            Case 544
                strTexte = "4.0 (SP1)"
            Case 1008
                Select Case intMonTableau(3)
                Case 3
                    strTexte = "4.0 (SP2)"
                End Select
            Case 1712
                Select Case intMonTableau(3)
                Case 6
                    strTexte = "4.0"
                End Select
            End Select
        Case 72
            Select Case intMonTableau(2)
            Case 2016
                Select Case intMonTableau(3)
                Case 8
                    strTexte = "4.01"
                End Select
            Case 3110
                Select Case intMonTableau(3)
                Case 8
                    strTexte = "4.01 (SP1)"
                End Select
            Case 3612
                Select Case intMonTableau(3)
                Case 1713
                    strTexte = "4.01 (SP2)"
                End Select
            End Select
        End Select 'intMonTableau(0)=4
    Case 5
        Select Case intMonTableau(1)
        Case 0
            Select Case intMonTableau(2)
            Case 518
                Select Case intMonTableau(3)
                Case 10
                    strTexte = "5 Beta 1"
                End Select
            Case 910
                Select Case intMonTableau(3)
                Case 1309
                    strTexte = "5 Beta 2"
                End Select
            Case 2014
                Select Case intMonTableau(3)
                Case 216
                    strTexte = "5"
                End Select
            Case 2314
                Select Case intMonTableau(3)
                Case 1003
                    strTexte = "5 (Office 2000)"
                End Select
            Case 2516
                Select Case intMonTableau(3)
                Case 1900
                    strTexte = "5.01 (Windows 2000 Beta 3)"
                End Select
            Case 2614
                Select Case intMonTableau(3)
                Case 3500
                    strTexte = "5 (Windows SE)"
                End Select
            Case 2919
                Select Case intMonTableau(3)
                Case 800
                    strTexte = "5.01 (Windows 2000 RC1)"
                Case 3800
                    strTexte = "5.01 (Windows 2000 RC2)"
                Case 6307
                    strTexte = "5.01"
                End Select
            Case 2920
                Select Case intMonTableau(3)
                Case 0
                    strTexte = "5.01 (Windows 2000)"
                End Select
            Case 3103
                Select Case intMonTableau(3)
                Case 1000
                    strTexte = "5.01 SP1 (Windows 2000 SP1)"
                End Select
            Case 3105
                Select Case intMonTableau(3)
                Case 106
                    strTexte = "5.01 SP1 (Windows 95/98 et Windows NT 4)"
                End Select
            Case 3314
                Select Case intMonTableau(3)
                Case 2101
                    strTexte = "5.01 SP2 (Windows 95/98 et Windows NT 4)"
                End Select
            Case 3315
                Select Case intMonTableau(3)
                Case 1000
                    strTexte = "5.01 SP2 (Windows 2000)"
                End Select
            Case 3502
                Select Case intMonTableau(3)
                Case 1000
                    strTexte = "5.01 SP3 (Windows 2000 SP3)"
                End Select
            Case 3700
                Select Case intMonTableau(3)
                Case 1000
                    strTexte = "5.01 SP4 'windows 2000 SP4)"
                End Select
            End Select 'intMontableau(0)=5;intMonTableau(1)=0
        Case 50
            Select Case intMonTableau(2)
            Case 3825
                Select Case intMonTableau(3)
                Case 1300
                    strTexte = "5.5 Beta"
                End Select
            Case 4030
                Select Case intMonTableau(3)
                Case 2400
                    strTexte = "5.5 & Internet Tools Beta"
                End Select
            Case 4134
                Select Case intMonTableau(3)
                Case 100
                    strTexte = "5.5 Windows Me"
                Case 600
                    strTexte = "5.5"
                End Select
            Case 4308
                Select Case intMonTableau(3)
                Case 2900
                    strTexte = "5.5 Advanced Secutity Privacy Beta"
                End Select
            Case 4522
                Select Case intMonTableau(3)
                Case 1800
                    strTexte = "5.5 SP1"
                End Select
            Case 4807
                Select Case intMonTableau(3)
                Case 2300
                    strTexte = "5.5 SP2"
                End Select
            End Select 'intMonTableau(0)=5; intMonTableau(1)=50
        End Select 'intMonTableau(0)=5
    Case 6
        Select Case intMonTableau(1)
        Case 0
            Select Case intMonTableau(2)
            Case 2462
                Select Case intMonTableau(3)
                Case 0
                    strTexte = "6 Beta"
                End Select
            Case 2479
                Select Case intMonTableau(3)
                Case 6
                    strTexte = "6 Beta Refresh"
                End Select
            Case 2600
                Select Case intMonTableau(3)
                Case 0
                    strTexte = "6"
                End Select
            Case 2800
                Select Case intMonTableau(3)
                Case 1106
                    strTexte = "6 SP1"
                Case 1278
                    strTexte = "6 v.01 Developer Preview (SP1b Beta)"
                Case 1314
                    strTexte = "6 v.04 Developer Preview (SP1b Beta)"
                End Select
            Case 2900
                Select Case intMonTableau(3)
                Case 2180
                    strTexte = "6 SP2"
                End Select
            Case 3663
                Select Case intMonTableau(3)
                Case 0
                    strTexte = "6 pour Windows Server 2003 RC1"
                End Select
            Case 3718
                Select Case intMonTableau(3)
                Case 0
                    strTexte = "6 pour Windows Server 2003 RC2"
                End Select
            Case 3790
                Select Case intMonTableau(3)
                Case 0
                    strTexte = "6 pour Windows Server 2003 "
                Case 1830
                    strTexte = "6 Windows XP x64/Server 2003 SP1"
                End Select
            End Select 'intMonTableau(0)=6; intMonTableau(1)=0
        End Select 'intMonTableau(0)=6
    Case 7
        Select Case intMonTableau(1)
        Case 0
            Select Case intMonTableau(2)
            Case 5299
                Select Case intMonTableau(3)
                Case 0
                    strTexte = "7 Beta 2"
                End Select
            Case 5730
                Select Case intMonTableau(3)
                Case 1100
                    strTexte = "7 Windows XP/Server 2003"
                Case 13
                    strTexte = "7 Windows XP/Server 2003"
                End Select
            Case 6000
                Select Case intMonTableau(3)
                Case 16386
                    strTexte = "7 Windows Vista"
                Case 16441
                    strTexte = "7 Windows XP SP2 x64/Server 2003 SP2 x64"
                Case 16711
                    strTexte = "7 Windows Vista"
                End Select
            End Select 'intMonTableau(0)=7; intMonTableau(1)=0
        End Select 'intMonTableau(0)=7
    Case 8
        Select Case intMonTableau(1)
        Case 0
            Select Case intMonTableau(2)
            Case 6001
                Select Case intMonTableau(3)
                Case 17184
                    strTexte = "8 Beta 1"
                Case 18241
                    strTexte = "8 Beta 2"
                End Select
            Case 6801
                Select Case intMonTableau(3)
                Case 0
                    strTexte = "8 Béta Windows 7 preBeta Build M3 PDC 2008"
                End Select
            End Select ''intMonTableau(0)=8; intMonTableau(1)=0
        End Select 'intMonTableau(0)=8
    End Select

    If strTexte = vbNullString Then
        TraduitIEVersion = strVers
    Else
        TraduitIEVersion = strTexte & cstSeparGauche & strVers & cstSeparDroite
    End If

End Function

Private Function TraduitMDACVersion(strVers As String) As String

    Dim strTexte As String

    strTexte = vbNullString

    Select Case strVers

        Case "2.1.2.4202.3"
            strTexte = "2.1 SP2"

        Case "2.50.3719.14"
            strTexte = "2.1 Windows NT 4"

        Case "2.50.4403.12"
            strTexte = "2.5"

        Case "2.51.5303.5"
            strTexte = "2.5 SP1"

        Case "2.52.6019.2"
            strTexte = "2.5 SP2"

        Case "2.53.6200.2"
            strTexte = "2.5 SP3"

        Case "2.60.6526.3"
            strTexte = "2.6"

        Case "2.61.7326.6"
            strTexte = "2.6 SP1"

        Case "2.62.7926.1"
            strTexte = "2.6 SP2"

        Case "2.62.7400.1"
            strTexte = "2.6 SP2 REFRESH"

        Case "2.70.7713.4"
            strTexte = "2.7"

        Case "2.70.9001.0"
            strTexte = "2.7 REFRESH"

        Case "2.71.9030.9"
            strTexte = "2.7 SP1"

        Case "2.80.1022.3"
            strTexte = "2.8"

        Case "2.81.1117.0"
            strTexte = "2.8 SP1"

        Case Else

            If Mid$(strVers, 2, 1) = "." And Mid$(strVers, 5, 1) = "." Then
                strTexte = Mid$(strVers, 1, 3)

                If Mid$(strVers, 4, 1) <> "0" Then
                    strTexte = strTexte & " SP" & Mid$(strVers, 4, 1)
                End If
            End If

    End Select

    If strTexte = vbNullString Then
        TraduitMDACVersion = strVers
    Else
        TraduitMDACVersion = strTexte & cstSeparGauche & strVers & cstSeparDroite
    End If

End Function

Private Function TraduitMSIVersion(strVers As String) As String

    Dim strTexte As String
    Dim strMonTableauTemp() As String
    Dim intMonTableau(0 To 3) As Integer
    Dim I As Byte

    strMonTableauTemp = Split(strVers, ".")
    ReDim Preserve strMonTableauTemp(0 To 3)
    For I = 0 To 3
        If strMonTableauTemp(I) = vbNullString Then
            intMonTableau(I) = 0
        Else
            intMonTableau(I) = CInt(strMonTableauTemp(I))
        End If
    Next
    Erase strMonTableauTemp

    strTexte = vbNullString

    Select Case intMonTableau(0)
    Case 1
        Select Case intMonTableau(1)
        Case 0
            Select Case intMonTableau(2)
            Case 5104
                Select Case intMonTableau(3)
                Case 0
                    strTexte = "1.0 (Office 2000 et Redistribuable Windows NT4 SP3/SP4/SP5/SP6/95/98/98SE)"
                End Select
            End Select
        Case 10
            Select Case intMonTableau(2)
            Case 1029
                Select Case intMonTableau(3)
                Case 0
                    strTexte = "1.1 (Windows 2000)"
                Case 1
                    strTexte = "1.1 (Redistribuable Windows NT 4 SP3/SP4/SP5/SP5/95/98/98SE)"
                End Select
            End Select
        Case 11
            Select Case intMonTableau(2)
            Case 1314
                Select Case intMonTableau(3)
                Case 0
                    strTexte = "1.1 (Windows 2000 SP1)"
                End Select
            Case 2405
                Select Case intMonTableau(3)
                Case 0
                    strTexte = "1.1 (Windows 2000 SP2)"
                End Select
            End Select
        Case 20
            Select Case intMonTableau(2)
            Case 1410
                Select Case intMonTableau(3)
                Case 0
                    strTexte = "1.2 (Windows Me)"
                End Select
            Case 1827
                Select Case intMonTableau(3)
                Case 1
                    strTexte = "1.2 (Redistribuable NT 4 SP3/SP4/SP5/SP6/)"
                End Select
            End Select
        End Select 'intMonTableau(0)=1
    Case 2
        Select Case intMonTableau(1)
        Case 0
            Select Case intMonTableau(2)
            Case 2600
                Select Case intMonTableau(3)
                Case 0
                    strTexte = "2.0 (Windows XP/Redistribuable NT 4 SP6/9x/2000 x32/SP1/SP2/XP)"
                Case 1
                    strTexte = "2.0 (Windows 2000 SP3/Redistribuable 9x)"
                Case 2
                    strTexte = "2.0 (Redistribuable Windows NT 4 SP6/9x/2000 x32/SP1/SP2)"
                Case 1106
                    strTexte = "2.0 (Windows XP SP1)"
                Case 1183
                    strTexte = "2.0 (Windows 2000 SP4)"
                End Select
            Case 3790
                Select Case intMonTableau(3)
                Case 0
                    strTexte = "2.0 (windows Server 2003 x32/x64)"
                End Select
            End Select
        End Select 'intMonTableau(0)=2
    Case 3
        Select Case intMonTableau(1)
        Case 0
            Select Case intMonTableau(2)
            Case 3790
                Select Case intMonTableau(3)
                Case 2180
                    strTexte = "3.0 (Windows XP SP2/Redistribuable 2000 SP2/SP3/XP x32/SP1/SP2/Server 2003 x32/x64"
                Case 2538
                    strTexte = "3.0 (Redistribuable)"
                End Select
            End Select
        Case 1
            Select Case intMonTableau(2)
            Case 4000
                Select Case intMonTableau(3)
                Case 1823
                    strTexte = "3.1 (Redistribuable Windows 200 SP3/SP4/XP x32/SP1/SP2/Serveur 2003)"
                Case 1830
                    strTexte = "3.1 (Windows XP x64/Server 2003 SP1)"
                Case 2435
                    strTexte = "3.1 v2 (Redistribuable Windows 2000 SP3/SP4/XP x32/SP1/SP2/x64/Serve 2003 x32/SP1"
                Case 3959
                    strTexte = "3.1 v2 (Windows Server 2003 SP2)"
                Case 4033
                    strTexte = "3.1 Security update (Redistribuable Windows 2000 SP4)"
                Case 4039
                    strTexte = "3.1 Security update (Redistribuable Windows XP x32/SP1/SP2)"
                Case 4042
                    strTexte = "3.1 Security update (Redistribuable Windows Sever 2003 x32/SP1/SP2/XP x64)"
                End Select
            Case 4001
                Select Case intMonTableau(3)
                Case 5512
                    strTexte = "3.1 Security update (Windows XP SP3)"
                End Select
            End Select
        End Select 'intMonTableau(0)=3
    Case 4
        Select Case intMonTableau(1)
        Case 0
            Select Case intMonTableau(2)
            Case 6000
                Select Case intMonTableau(3)
                Case 16386
                    strTexte = "4.0 (Windows Vista)"
                End Select
            Case 6001
                Select Case intMonTableau(3)
                Case 18000
                    strTexte = "4.0 (Windows Vista SP1/Serve 2008)"
                End Select
            End Select
        Case 5
            Select Case intMonTableau(2)
            Case 6000
                Select Case intMonTableau(3)
                Case 20817
                    strTexte = "4.5 (Redistribuable Windows Vista)"
                End Select
            Case 6001
                Select Case intMonTableau(3)
                Case 22159
                    strTexte = "4.5 (Redistribuable Windows XP/Server 2003)"
                Case 22162
                    strTexte = "4.5 (Redistribuable Windows Vista SP1/Server 2008)"
                End Select
            End Select
        End Select 'intMonTableau(0)=4
    Case 5
        Select Case intMonTableau(1)
        Case 0
            Select Case intMonTableau(2)
            Case 6801
                Select Case intMonTableau(3)
                Case 0
                    strTexte = "5.0 (Windows 7 preBeta Build M3 PDC 2008)"
                End Select
            End Select
        End Select 'intMonTableau(0)=5
    End Select

    If strTexte = vbNullString Then
        TraduitMSIVersion = strVers
    Else
        TraduitMSIVersion = strTexte & cstSeparGauche & strVers & cstSeparDroite
    End If

   On Error GoTo 0
   Exit Function

TraduitMSIVersion_Error:

    MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure TraduitMSIVersion of Module de classe clsInfoSysteme"

End Function

Private Sub Class_Initialize()

    IniVariables

    AffiCouleur
    AffiResolution
    InfoImprimante
    InfoJet
    InfoVersionDCOM
    InfoVersionIE
    InfoVersionMDAC
    InfoVersionMSI
    InfoVersionWindows
    RepertoireTemp
    EspaceLbrDisqTemp

    Set clsRegistre = Nothing

End Sub

Property Get TerminalServicePresent() As Boolean

    TerminalServicePresent = blnTerminalServicePresent

End Property

Property Get AffichageCouleur() As String

    AffichageCouleur = strAffichageCouleur

End Property

Property Get AffichageResolution() As String

    AffichageResolution = strAffichageResolution

End Property

Property Get DcomPresent() As Boolean

    DcomPresent = blnDcomPresent

End Property

Property Get DcomVersion() As String

    DcomVersion = strDcomVersion

End Property

Property Get EspaceDisqueTemporaire() As Double

    EspaceDisqueTemporaire = dblEspaceDisqueTemporaire

End Property

Property Get IEPresent() As Boolean

    IEPresent = blnIEPresent

End Property

Property Get IEVersion() As String

    IEVersion = strIEVersion

End Property

Property Get ImprimanteInformation() As String

    ImprimanteInformation = strImprimanteInfo
    
End Property

Property Get ImprimantePresent() As Boolean

    ImprimantePresent = blnImprimantePresent

End Property

Property Get IsWin2003() As Boolean

    IsWin2003 = blnIsWin2003

End Property

Property Get IsWinHomeServer() As Boolean

    IsWinHomeServer = blnIsWinHomeServer

End Property

Property Get IsWin2008() As Boolean

    IsWin2008 = blnIsWin2008

End Property

Property Get IsWinCE() As Boolean

    IsWinCE = blnIsWinCE

End Property

Property Get IsWin2K() As Boolean

    IsWin2K = blnIsWin2K

End Property

Property Get IsWin64bit() As Boolean

    IsWin64bit = blnIsWin64bit

End Property

Property Get IsWin95() As Boolean

    IsWin95 = blnIsWin95

End Property

Property Get IsWin98() As Boolean

    IsWin98 = blnIsWin98

End Property

Property Get IsWin98ME() As Boolean

    IsWin98ME = blnIsWin98ME
    
End Property

Property Get IsWin98SE() As Boolean

    IsWin98SE = blnIsWin98SE

End Property

Property Get IsWin9x() As Boolean

    IsWin9x = blnIsWin9x

End Property

Property Get IsWinMediaCenter() As Boolean

    IsWinMediaCenter = blnIsWinMediaCenter

End Property

Property Get IsWinNT3() As Boolean

    IsWinNT3 = blnIsWinNT3

End Property

Property Get IsWinNT4() As Boolean

    IsWinNT4 = blnIsWinNT4

End Property

Property Get IsWinNT5() As Boolean

    IsWinNT5 = blnIsWinNT5

End Property

Property Get IsWinNT6() As Boolean

    IsWinNT6 = blnIsWinNT6

End Property

Property Get IsWinNT() As Boolean

    IsWinNT = blnIsWinNT

End Property

Property Get IsWinServer() As Boolean

    IsWinServer = blnIsWinServer

End Property

Property Get IsWinXP() As Boolean

    IsWinXP = blnIsWinXP

End Property

Property Get IsWinVista() As Boolean

    IsWinVista = blnIsWinVista

End Property

Property Get IsWin7() As Boolean

    IsWin7 = blnIsWin7

End Property

Property Get JetPresent() As Boolean

    JetPresent = blnJetPresent

End Property

Property Get JetVersion() As String

    JetVersion = strJetVersion

End Property

Property Get MdacPresent() As Boolean

    MdacPresent = blnMdacPresent

End Property

Property Get MdacVersion() As String

    MdacVersion = strMdacVersion

End Property

Property Get MsiPresent() As Boolean

    MsiPresent = blnMsiPresent

End Property

Property Get MsiVersion() As String

    MsiVersion = strMsiVersion

End Property

Property Get RepertoireTemporaire() As String

    RepertoireTemporaire = strRepertoireTemporaire

End Property

Property Get WindowsVersion() As String

    WindowsVersion = strWindowsVersion

End Property

Conclusion :


Si vous avez des remarques ou des questions :)

Codes Sources

A voir également

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.