View Full Version : [VB6] Hardware ID
Ciao a tutti
Vorrei sapere se e come è possibile ottenere degli identificativi univoci e non modificabili (che possono essere Mac address, serial number o simili) dei componenti più comuni di un PC, come ad esempio scheda madre, processore, vga, hard disk etc.
Tali identificativi formeranno poi un ID unico che verrà utilizzato da me per la generazione di un codice di attivazione.
Grazie in anticipo
Christian
Devi utilizzare le WMI e c'è anch un programma free chiamato WMI Code Generator della Microsoft che ti facilita la creazione del codice come serve a te. dacci un'occhiata qui ;)
http://www.microsoft.com/downloads/en/confirmation.aspx?familyId=2CC30A64-EA15-4661-8DA4-55BBC145C30E&displayLang=en&oRef=
ottimo, è proprio quello che mi serviva!
una domandina però, vedo che per alcune periferiche non è possibile ottenere il serial number, come ad esempio l'hard disk che mi ritorna una stringa vuota
è normale???
oppure, sapete se è già presente magari nel registro un qualche ID, anche software, che posso sfruttare?
ottimo, è proprio quello che mi serviva!
una domandina però, vedo che per alcune periferiche non è possibile ottenere il serial number, come ad esempio l'hard disk che mi ritorna una stringa vuota
è normale???
oppure, sapete se è già presente magari nel registro un qualche ID, anche software, che posso sfruttare?
questa è una piccola dichiarazione che puoi usare nel programma
Dim search As New ManagementObjectSearcher("SELECT * FROM Win32_BIOS")
Dim search2 As New ManagementObjectSearcher("SELECT * FROM Win32_Processor")
Dim search3 As New ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia")
Dim search4 As New ManagementObjectSearcher("SELECT * FROM Win32_ComputerSystem")
dove search3 riguarda proprio l'hard-disk e search2 è il processore dove sicuramente sono i due serial number più consigliati per creare le license prova a cercare con il programma WMI Code Generator in Win32_PhysicalMedia e successivamente metti SerialNumber e manda i esecuzione il codice vedi se adesso funziona ;)
questa è una piccola dichiarazione che puoi usare nel programma
Dim search As New ManagementObjectSearcher("SELECT * FROM Win32_BIOS")
Dim search2 As New ManagementObjectSearcher("SELECT * FROM Win32_Processor")
Dim search3 As New ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia")
Dim search4 As New ManagementObjectSearcher("SELECT * FROM Win32_ComputerSystem")
dove search3 riguarda proprio l'hard-disk e search2 è il processore dove sicuramente sono i due serial number più consigliati per creare le license prova a cercare con il programma WMI Code Generator in Win32_PhysicalMedia e successivamente metti SerialNumber e manda i esecuzione il codice vedi se adesso funziona ;)
adesso physicalmedia mi è pure scomparso dal generator :confused: e non so come, visto che prima di pranzo c'era! provo il riavvio terapeutico dopo questo post. mi ricordo cmq che proprio il campo SerialNumber mi tornava una stringa vuota.
volevo dare un minimo di tolleranza, ossia prendere in considerazione tre ID hardware (processore, mobo e hard disk) e creare una licenza che tolleri la modifica di massimo 2 componenti su tre. per il processore ho trovato il campo ProcessorID che dovrebbe essere adatto alle mie esigenze, ma per gli altri due che posso usare?
adesso physicalmedia mi è pure scomparso dal generator :confused: e non so come, visto che prima di pranzo c'era! provo il riavvio terapeutico dopo questo post. mi ricordo cmq che proprio il campo SerialNumber mi tornava una stringa vuota.
volevo dare un minimo di tolleranza, ossia prendere in considerazione tre ID hardware (processore, mobo e hard disk) e creare una licenza che tolleri la modifica di massimo 2 componenti su tre. per il processore ho trovato il campo ProcessorID che dovrebbe essere adatto alle mie esigenze, ma per gli altri due che posso usare?
allora per quanto riguarda il processore devi cercare la voce processorID in win32_processor, per l'HD cerca la voce serialnumber in win32_PhysicalMedia che questa voce potrebbe essere anche vuota ("ma in casi rari") e per quanto riguarda la mobo devi cercare serialnumber in Win32_BaseBoard è questa voce la maggior parte delle volte è vuota :D cmq ho testato il tutto confrontando i dati con il programma CPUZ e funziona perfettamente ti posto un pò di codice riguardo la pressione di un pulsante per visualizzare le 3 informazioni richieste ;)
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim search As New ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard")
Dim search2 As New ManagementObjectSearcher("SELECT * FROM Win32_Processor")
Dim search3 As New ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia")
Dim info As ManagementObject
Dim txt,finale As String
'Recupero l'ID della mobo
For Each info In search.Get()
If info("SerialNumber") Is Nothing Then
txt = "Non presente"
Else
txt = info("SerialNumber").ToString()
End If
finale = "Mobo ID: " & txt & vbCrlF
Next
'Recupero l'ID del processore
For Each info In search2.Get()
If info("SerialNumber") Is Nothing Then
txt = "Non presente"
Else
txt = info("ProcessorID").ToString()
End If
finale="Processore ID: " & txt & vbCrlF
Next
'Recupero l'ID dell'HD
For Each info In search3.Get()
If info("SerialNumber") Is Nothing Then
txt = "Non presente"
Else
txt = info("SerialNumber").ToString()
End If
finale="Hard Disk ID: " & txt
Next
'Stampo a video
MsgBox (finale)
End Sub
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.