Numero de serie des lecteurs (disque dur, lecteur usb)

scromania Messages postés 452 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 11 janvier 2013 - 3 nov. 2008 à 17:16
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 4 nov. 2008 à 13:25
bonsoir tout le monde ,

Je cherche  un moyen pour recuperer le numero de serie physique de tout les disques durs ainsi que leslecteur connecter sur le pc

merci
ex:

D : Volume Disque local : Série : 1681506970
F : Volume CLÉ_L2M_CF : Série : 1581361326
Z : Volume CG92 : Série : 2019304617

5 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
3 nov. 2008 à 17:59
salut,

un exemple en VB6 avec WMI



<hr />
'    NUMÉRO DE SÉRIE (PHYSIQUE) DU DISQUE DUR PAR WMI
'    http://www.codyx.org/snippet_numero-serie-physique-disque-dur-wmi_291.aspx#950
'    Posté par [ PCPT ] le 31/01/2007
<hr />




Function 
GetPhysicalDriveSerialNumber(
Optional

ID
As Integer
=
0
,

Optional
bSepar

As Boolean
=
True
)
As
String

    GetPhysicalDriveSerialNumber = "0000-0000"
    On Local Error Resume Next
    Dim sComputerName$
    sComputerName = Environ$("COMPUTERNAME")
    
    Dim WMI_Obj As Object, WMI_ObjProps As Object, ObjClsItem As
Object
    Set WMI_Obj = GetObject("winmgmts:\" & sComputerName & "\root\cimv2")
    Set WMI_ObjProps = WMI_Obj.ExecQuery("Select * from Win32_PhysicalMedia", , 48)
    
    Dim sRet As String
    For Each ObjClsItem In WMI_ObjProps
        If ObjClsItem.Tag = "\\.\PHYSICALDRIVE" & CStr(ID) Then
'           ici le serial en
base16 ou 10
            sRet = Trim$(ObjClsItem.SerialNumber)
'           conversion base10
            If Not (LenB(sRet) = 16) Then
sRet = GetBase10FromBase16(sRet)
'           ok, retour
            If bSepar Then
                GetPhysicalDriveSerialNumber = UCase$(LeftB$(sRet, 8) & "-" & RightB$(sRet, 8))
            Else
                GetPhysicalDriveSerialNumber = UCase$(sRet)
            End If
            Exit For
        End If
    Next ObjClsItem
    Set ObjClsItem = Nothing
    Set WMI_ObjProps = Nothing
    Set WMI_Obj = Nothing
End Function
Private Function GetBase10FromBase16(ByVal sStr As String) As String
    Dim i As Integer
    sStr =



Replace



(sStr, "20",
vbNullString)


    GetBase10FromBase16 = Space$(8)
    For i = 1 To 15 Step 2
        Mid$(GetBase10FromBase16, i \ 2 + 1, 1) = Chr$(Val("&H" & Mid$(sStr, i, 2)))
    Next i
End Function






facilement adaptable en VB.NET, ou voir également dans les sources présentes sur VbFrance....


Prenez un instant pour répondre à [forum/sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
0
scromania Messages postés 452 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 11 janvier 2013 9
3 nov. 2008 à 18:17
excuse moi mes j'ai un peut de mal a le convertir en  vb net
merci d'avance
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
3 nov. 2008 à 18:29
montre-nous le début de ta conversion?

et que t'ont donné les recherches dans les sources existantes?
0
scromania Messages postés 452 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 11 janvier 2013 9
4 nov. 2008 à 12:23
Bonjour,
j'ai trouvé un bout de code hier le voici

Function GetVolumeSerial(
ByVal strDrive
As
String)
As
String

Dim VolSer
As UInt32, MaxComL
As UInt32, VolFlags
As UInt32

Dim VolNameB
As StringBuilder =
New StringBuilder(256)

Dim FileSysNB
As StringBuilder =
New StringBuilder(256)

Dim renB
As
Boolean = GetVolumeInformation(strDrive, VolNameB, Convert.ToUInt32(VolNameB.Capacity), VolSer, MaxComL, VolFlags, FileSysNB, Convert.ToUInt32(FileSysNB.Capacity))

Return VolSer.ToString 

End
Function

merci pour le votre mes j'ai pas tout compris .

vous serez t il possible de m'expliquer comment recuperer les infos maitenant

cordialement
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
4 nov. 2008 à 13:25
le code WMI VB6 que je t'ai donné permet de récupérer le numéro de série PHYSIQUE d'un DISQUE DUR

18 minutes plus tard tu disais bloquer sur la conversion VB.net. je te demandais donc de montrer ce que tu avais fait pour t'aider sur les points bloquants. si c'est juste "j'y arrive pas", alors en effet il faut parfois plus de 18 minutes...

j'ai aussi indiqué de chercher dans les sources
le code que tu fournies là renvoie diverses infos, et tu demandes malgré tout d'expliquer...

le minimum est de te renseigner sur l'API
GetVolumeInformation

que tu utilises...

pour info elle est capable de renvoyer un serial, ce dernier sera le

numéro de série LOGIQUE d'une PARTITION



Prenez un instant pour répondre à [forum/sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
0
Rejoignez-nous