Recuperer le label et le numero de serie d'un disque dur

Soyez le premier à donner votre avis sur cette source.

Snippet vu 23 386 fois - Téléchargée 90 fois


Contenu du snippet

Récuperer les infos du disque ( N° de série et le label du disque )

Source / Exemple :


' Déclaration à mettre dans un Module

Declare Function GetVolumeInformation Lib "kernel32" Alias "GetVolumeInformationA" ( _
    ByVal lpRootPathName As String, _
    ByVal lpVolumeNameBuffer As String, _
    ByVal nVolumeNameSize As Long, _
    lpVolumeSerialNumber As Long, _
    lpMaximumComponentLength As Long, _
    lpFileSystemFlags As Long, _
    ByVal lpFileSystemNameBuffer As String, _
    ByVal nFileSystemNameSize As Long) As Long
'Fin des Déclarations

Private Sub Bouton1_Click()
    Dim r&, PathName$, DrvVolumeName$, DrvSerialNo$

'Disque à checker

    PathName$ = "c:\"
    
    rgbGetVolumeInformationRDI PathName$, DrvVolumeName$, DrvSerialNo$
    
    'Afficher le résultat dans des msgbox

    MsgBox (" Lecteur " & ": " & UCase$(PathName$))
    MsgBox (" Le Label du disk " & ": " & DrvVolumeName$)
    MsgBox (" Le Numéro de série du disque " & ": " & DrvSerialNo$)
End Sub
Private Sub rgbGetVolumeInformationRDI(PathName$, DrvVolumeName$, DrvSerialNo$)
    Dim r As Long
    Dim pos As Integer
    Dim HiWord As Long
    Dim HiHexStr As String
    Dim LoWord As Long
    Dim LoHexStr As String
    Dim VolumeSN As Long
    Dim MaxFNLen As Long
    Dim UnusedStr As String
    Dim UnusedVal1 As Long
    Dim UnusedVal2 As Long

    DrvVolumeName$ = Space$(14)
    UnusedStr$ = Space$(32)

    r& = GetVolumeInformation(PathName$, _
    DrvVolumeName$, Len(DrvVolumeName$), VolumeSN&, _
    UnusedVal1&, UnusedVal2&, UnusedStr$, Len(UnusedStr$))

    If r& = 0 Then Exit Sub

    'determine le label

    pos% = InStr(DrvVolumeName$, Chr$(0))
    If pos% Then DrvVolumeName$ = Left$(DrvVolumeName$, pos% - 1)
    If Len(Trim$(DrvVolumeName$)) = 0 Then DrvVolumeName$ = "(pas de label)"
    
    'determine l'id du disque

    HiWord& = GetHiWord(VolumeSN&) And &HFFFF&
    LoWord& = GetLoWord(VolumeSN&) And &HFFFF&
    
    HiHexStr$ = Format$(Hex(HiWord&), "0000")
    LoHexStr$ = Format$(Hex(LoWord&), "0000")
    
    DrvSerialNo$ = HiHexStr$ & "-" & LoHexStr$
End Sub
Function GetHiWord(dw As Long) As Integer
    If dw& And &H80000000 Then
        GetHiWord% = (dw& \ 65535) - 1
    Else: GetHiWord% = dw& \ 65535
    End If
End Function
Function GetLoWord(dw As Long) As Integer
    If dw& And &H8000& Then
        GetLoWord% = &H8000 Or (dw& And &H7FFF&)
    Else: GetLoWord% = dw& And &HFFFF&
    End If
End Function

A voir également

Ajouter un commentaire

Commentaires

kiki67100
Messages postés
318
Date d'inscription
samedi 6 mai 2006
Statut
Membre
Dernière intervention
10 août 2013
1 -
Ok merci pour l'info
parce que sa me parresais louche


Kevin
Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
58 -
fût un temps ou l'heure n'etait tout simplement pas sauvée dans la base... d'où le 00:00:00
kiki67100
Messages postés
318
Date d'inscription
samedi 6 mai 2006
Statut
Membre
Dernière intervention
10 août 2013
1 -
Salut a tous
ses la 98 ème source de nix fait le meme jour meme heure et minute et seconde 17/09/1999 00:00:00 xD mdr

Kevin
sharkus
Messages postés
43
Date d'inscription
mardi 16 juillet 2002
Statut
Membre
Dernière intervention
10 juillet 2012
-
Salut à tous,
Si vous voulez le No de disque dur physique et non de la partition, en cherchant bien sur le site vous trouverez cette adresse: http://www.vbfrance.com/code.aspx?ID=27883
Le code fonctionne apparement sous tout les OS.
Bonne prog.
cs_julien3129
Messages postés
1
Date d'inscription
lundi 16 octobre 2006
Statut
Membre
Dernière intervention
21 novembre 2006
-
Bonjour à tous,éffectivement, avec ton code on obtien le numero de serie du volume. J'ai réussi à obtenir le numero physique du disque dur avec WMI , mais uniquement sur windows XP. Sous 2000 ça ne fonctionne pas. Et c'est précisement ce que je cherche. Si quelqu'un à une solution, peu importe le language, je suis preneur.
MERCI

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.