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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top