Obtener H / D Número de serie (no Volum número de serie) para IDE y SATA
-
22-08-2019 - |
Pregunta
¿Cómo puedo leer el número de serie del disco duro IDE y SATA en VB.NET? (No quiero que el número de serie de volumen).
Esta información debe ser recogida tanto para XP y Vista, si es posible sin derechos administrativos.
Solución
Puede utilizar WMI (Windows Management Instrumentation) como esto :
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
A pesar de que he leído sobre los casos en los que no se devuelve ningún número de serie mediante WMI. Otra manera de lograr esto sería a través de la plataforma Invocación Servicios (PInvoke).
Este artículo incluye una descarga en la que los implementos de autor CreateFile () y Dispositivo () para extraer información de la unidad a través de servicios de interoperabilidad en VB .NET.
Para utilizar cualquiera de los métodos descritos anteriormente que se necesitan derechos de administrador, una utilidad que parece eludir este se puede encontrar aquí . Si su espíritu de aventura de C ++ / Win32 código fuente está disponible consultar libremente. (Salida 'ReadPhysicalDriveInNTWithZeroRights ()' la función)
Otros consejos
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
Este es el código para obtener el número de serie del disco duro
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
Espero que ayuda.