Les Snippets

Connexion

Numéro de série (physique) du disque dur par WMI

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 26/01/2007 22:19:55 et initié par surfzoid [Liste]
Date de mise à jour : 11/02/2007 19:41:48
Vue : 5291
Catégorie(s) : Système, Divers
Langages dispo pour ce code :
- VB6, VBA



Langage : VB6 , VBA
Date ajout : 31/01/2007
Posté par PCPT [Liste]
DateMAJ : 11/02/2007
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) = 16Then  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 As Integer
    sStr = Replace(sStr, "20", vbNullString)
    GetBase10FromBase16 = Space$(8)
    For i = To 15 Step 2
        Mid$(GetBase10FromBase16, i \ + 1, 1) = Chr$(Val("&H" Mid$(sStr, i, 2)))
    Next i
End Function


Snippets en rapport avec : Wmi, Wql, Disque, Numéro, Série



Codes sources en rapport avec : Wmi, Wql, Disque, Numéro, Série

{Visual Basic, VB6, VB.NET, VB 2005} LIRE LE NUMERO DE SÉRIE D'UN DISQUE
Créer un nouveau projet. Ajouter sur la feuille: - un Bouton de commande (pour quitter) - un Labe...

{Visual Basic, VB6, VB.NET, VB 2005} RECUPERER LE LABEL ET LE NUMERO DE SERIE D'UN DISQUE DUR
Récuperer les infos du disque ( N° de série et le label du disque ) ...

{Visual Basic, VB6, VB.NET, VB 2005} NUMÉRO DE SÉRIE EN FONCTION DU PC
Salut tout le monde, Je poste une nouvelle source en rapport avec les numéros de série pour vos app...

{Delphi} INFORMATIONS SYSTÈME (VIA WMI)
Un composant qui utilise WMI (Windows Management Instrumentation) pour récupérer des informations sy...

{Delphi} MISE EN OEUVRE DE WMI (VIA WQL)
Exemple de code permettant l'utilisation de WMI sous Windows 2000/XP/2003. Il est également possib...

{C# / C#.NET} GESTION D'UNE CONNEXION WMI
C'est une petite classe sans beaucoup de prétention qui permet d'établir une connexion WMI vers une ...

{Delphi} GÉNÉRATEUR DE SERIALS EN APP CONSOLE
Petit générateur de serials simple, en application console ...

{Visual Basic, VB6, VB.NET, VB 2005} NUMÉRO DE SÉRIE DANS EXE
-Créer Outil.exe (répertoire exemple) -Exécuter le juste pour voir -Exécuter NSinEXE (pour insérer...

{C / C++ / C++.NET} LIAISON SERIE RS-232
Ce programme créé sous Dev-C++ est codé en C. Il permet principalement l'envoi et la réception de do...

{Visual Basic, VB6, VB.NET, VB 2005} CHKDSKSPC- CHECK DISK SPACE / AFFICHAGE DE L'ÉTAT D'OCCUPATION DES DISQUES
Comme je manipule beaucoup de disques et que mon installation tient du miracle, j'ai (parfois), lor...