Aide sur WMI

Signaler
Messages postés
67
Date d'inscription
mercredi 5 mai 2010
Statut
Membre
Dernière intervention
20 mai 2011
-
Messages postés
67
Date d'inscription
mercredi 5 mai 2010
Statut
Membre
Dernière intervention
20 mai 2011
-
Bonjour,

J'ai trouver ce code pour récupérer le numéros de série physique d'un disque dure.

 Function GetPhysicalDriveSerialNumber(Optional ByVal ID As Integer 0, Optional ByVal bSepar As Boolean True) As String
        'CETTE FONCTION NéCESSITE :
        '       LA RéFéRENCE 'System.Management'
        '       LA FONCTION 'GetBase10FromBase16'
        'valeur de retour par défaut
        Dim sReturn As String
        If bSepar Then sReturn "0000-0000" Else sReturn "00000000"
        Try
            'construction requête WMI
            Dim WMI_Obj As New ManagementObjectSearcher("root\CIMV2", "SELECT * FROM Win32_PhysicalMedia")
            'recherche chaque item
            For Each ObjClsItem As ManagementObject In WMI_Obj.Get()
                'si item = disque recherché
                If (ObjClsItem.GetPropertyValue("Tag").ToString = "\\.\PHYSICALDRIVE" & ID.ToString) Then
                    'ici le serial en base16 ou 10
                    Dim sRet As String = ObjClsItem.GetPropertyValue("SerialNumber").ToString
                    'peut être vide
                    If sRet IsNot Nothing Then
                        'conversion base10
                        sRet = sRet.Trim
                        If Not (sRet.Length 8) Then sRet GetBase10FromBase16(sRet)
                        'ajoute le "-" si nécessaire, puis retour en variable
                        If bSepar Then sRet = String.Concat(sRet.Substring(0, 4), "-", sRet.Substring(4))
                        sReturn = sRet.ToUpper
                    End If
                    Exit For
                End If
            Next ObjClsItem
        Catch ex As Exception
        End Try
        'retour fonction
        Return sReturn
    End Function


En mettant la valeur ID=0 ce code fonctionne sur certaine machine mais pas sur toutes. Je me demande donc s'il ne faut pas mettre une autre valeur dans ID.

Quelqu'un sait-t-il a quoi correspond le numéros ID attendue et comment le trouver ?

1 réponse

Messages postés
67
Date d'inscription
mercredi 5 mai 2010
Statut
Membre
Dernière intervention
20 mai 2011
1
J'ai fait une boucle pour tester la routine avec les numéros ID = 0 à 100.
Sur les machines qui me posent problème je recoie toujours 0 quelque soit la valeur du ID.

J'en viens a me demander s'il ne faut pas avoir des droits particulier pour pouvoir lire le numéros de série. J'ai cherché sur le net mais je n'ai rien trouver. Je suis novice sur les WMI. Quelqu'un pourrait-il m'aider ?