Ottenere H / D Numero di serie (non Volumn Serial Number) per IDE e SATA
-
22-08-2019 - |
Domanda
Come posso leggere il numero di serie del disco rigido per l'IDE e SATA in VB.NET? (Non voglio che il numero di serie del volume).
Queste informazioni dovrebbero essere raccolte sia per XP e Vista, se possibile, senza diritti amministrativi.
Soluzione
È possibile utilizzare WMI (Windows Management Instrumentation) come questo :
Dim mos As New ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia")
For Each mo As ManagementObject In mos.Get()
Dim serial As String = mo("SerialNumber").ToString()
Next
Anche se, ho letto di casi in cui nessun numero di serie viene restituito tramite WMI. Un altro modo per ottenere questo risultato sarebbe attraverso Platform Invocation Services (PInvoke).
Questo articolo include un download in cui gli attrezzi autore CreateFile () e DeviceIoControl () per estrarre le informazioni unità attraverso servizi di interoperabilità in VB .NET.
Per utilizzare uno dei metodi sopra descritti sarà necessario diritti di amministratore, un programma di utilità che sembra aggirare questo può essere trovato qui . Se la vostra sensibilità avventurosa del C ++ / Win32 codice sorgente è disponibile per essere esaminate. (Check out 'ReadPhysicalDriveInNTWithZeroRights ()' la funzione)
Altri suggerimenti
Public Function getHardDiskSerialNo()
Dim serial As String
Dim hd As New ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia")
For Each dvs As ManagementObject In hd.Get()
serial = dvs("SerialNumber").ToString()
Next
Return serial
End Function
Ecco il codice per ottenere HDD Serial Number
Dim HDD_Serial As String
Dim hdd As New ManagementObjectSearcher("select * from Win32_DiskDrive")
For Each hd In hdd.Get
HDD_Serial = hd("SerialNumber")
MsgBox(HDD_Serial)
Next
Speranza che aiuta.