Rechercher UUID d'une machine Windows par VBA

mimifer49 Messages postés 2 Date d'inscription dimanche 16 mai 2004 Statut Membre Dernière intervention 12 septembre 2017 - Modifié le 11 sept. 2017 à 10:26
vb95 Messages postés 3480 Date d'inscription samedi 11 janvier 2014 Statut Non membre Dernière intervention 10 juillet 2024 - 12 sept. 2017 à 14:19
Bonjour,
J'ai vainement cherché à extraire l'UUID d'une machine windows grace à VBA.
Je sais qu'en utilisant WMIC, on peut lire cette information mais je ne sais pas intégrer une commande WMIC dans une macro VBA.
Une bonne âme pourrait-elle me mettre sur la bonne piste?
Merci d'avance.
A voir également:

4 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
11 sept. 2017 à 14:32
Bonjour,

Si c'est pour voir les prises USB connectées voici le code:

Private Sub CommandButton1_Click()
 'Find USB Stick
Set dicUSBDrives = GetUSBDrives
'---------------------------------------------------------------------------------------------------------------------------------------------------------------------
If dicUSBDrives.Count = 0 Then
MsgBox "Pas trouvé de clé USB!", 48, "Chercher clé USB connectée"
Else
MsgBox "Trouvé une clé USB:", 64, "Chercher clé USB connectée"
For Each strUSBDrive In dicUSBDrives
MsgBox "Emplacement: " & strUSBDrive & "\", 64, "Chercher clé USB connectée"
Target = strUSBDrive & "\MyDocuments"
Next
End If
End Sub
'---------------------------------------------------------------------------------------------------------------------------------------------------------------------
Function GetUSBDrives()
' Populate a dictionary object with USB drive letters
Set dicUSBList = CreateObject("Scripting.Dictionary")
   dicUSBList.CompareMode = vbTextCompare
   strComputer = "."
   Set objWMI = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
   Set colDiskDrives = objWMI.ExecQuery("Select DeviceID from Win32_DiskDrive WHERE InterfaceType='USB'")
           For Each objDiskDrive In colDiskDrives
                   strDeviceID = objDiskDrive.DeviceID
                   strEscapedDeviceID = Replace(strDeviceID, "\", "\\")
               Set colDiskPartitions = objWMI.ExecQuery _
                   ("ASSOCIATORS OF {Win32_DiskDrive.DeviceID=""" & strEscapedDeviceID & """} WHERE " _
                   & "AssocClass = Win32_DiskDriveToDiskPartition")
           For Each objDiskPartition In colDiskPartitions
               Set colLogicalDisks = objWMI.ExecQuery("ASSOCIATORS OF {Win32_DiskPartition.DeviceID=""" & _
                   objDiskPartition.DeviceID & """} WHERE " & _
                   "AssocClass = Win32_LogicalDiskToPartition")
           For Each objLogicalDisk In colLogicalDisks
               dicUSBList.Add objLogicalDisk.DeviceID, ""
           Next
       Next
Next
Set GetUSBDrives = dicUSBList
End Function

mimifer49 Messages postés 2 Date d'inscription dimanche 16 mai 2004 Statut Membre Dernière intervention 12 septembre 2017
12 sept. 2017 à 09:33
Bonjour,
Merci pour la promptitude de votre réponse. Malheureusement cette réponse ne correspond pas à ma demande que je précise:
Afin de "limiter" (tout est relatif!) l'installation d'un classeur excel sur une machine, j'ai basé ma protection sur la lecture de l'UUID de l'ordinateur.
Je sais le faire sur un Mac mais pas sur un PC/windows.
Je sais lire l'information sur un PC via cmd.exe par la commande "Wmic csproduct get UUID" que je cherche à intégrer dans une macro VBA mais je ne trouve pas la réponse.
Je précise que j'ai pas mal "écrémé" internet sans succès alors...
Merci à celui qui me l'apportera ou me mettra sur la bonne voie.
Bonne journée.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
12 sept. 2017 à 12:20
voir ceci si cela peut t'aider:

http://warin.developpez.com/access/fichiers/#LI-D-1


vb95 Messages postés 3480 Date d'inscription samedi 11 janvier 2014 Statut Non membre Dernière intervention 10 juillet 2024 169
Modifié le 12 sept. 2017 à 12:50
Bonjour
Trouvé sur un Forum Excel WMI

Sub listeHotFixs()
Dim strComputer As String
Dim objWMIService As Object, objQuickFix As Object, colQuickFixes As
Object

strComputer = "."

Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colQuickFixes = objWMIService.ExecQuery("Select * from
Win32_QuickFixEngineering")

For Each objQuickFix In colQuickFixes
Debug.Print "Computer: " & objQuickFix.CSName
Debug.Print "Description: " & objQuickFix.Description
Debug.Print "Hot Fix ID: " & objQuickFix.HotFixID
Debug.Print "Installation Date: " & objQuickFix.InstallDate
Debug.Print "Installed By: " & objQuickFix.InstalledBy
Next
End Sub


objQuickFix.HotFixID : serait-ce le paramètre que tu cherches ?

Désolé : cela concerne les mises à jour du système d'exploitation je crois .


La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. 
vb95 Messages postés 3480 Date d'inscription samedi 11 janvier 2014 Statut Non membre Dernière intervention 10 juillet 2024 169
Modifié le 12 sept. 2017 à 14:12
Tu trouveras ton numéro ID (computer ID) en faisant ceci :
Dans Démarrer, Rechercher, taper REGEDIT. Il affiche le registre. Ensuite aller dans :
HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\INTERNET EXPLORER\REGISTRATION.
 
Le computer ID se trouve en regard de ProductID.

En VBA il doit être facile de trouver comment lire une valeur dans la base de registres

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. 
vb95 Messages postés 3480 Date d'inscription samedi 11 janvier 2014 Statut Non membre Dernière intervention 10 juillet 2024 169
12 sept. 2017 à 14:19
Avec le Windows Scripting Host :


Dim WshShell, IdOrdinateur
 Set WshShell = CreateObject("WScript.Shell" )
 IdOrdinateur = WshShell.RegRead("HKEY_LOCAL_M​ACHINE\Software\Microsoft\Internet Explorer\Registration\ProductId")


 
0
Rejoignez-nous