Получить серийный номер H / D (не серийный номер Volumn) для IDE и SATA - PullRequest
2 голосов
/ 11 февраля 2009

Как узнать серийный номер жесткого диска для дисков IDE и SATA в VB.NET? (Я не хочу серийный номер тома).

Эта информация должна собираться как для XP, так и для Vista, если это возможно, без прав администратора.

Ответы [ 3 ]

6 голосов
/ 11 февраля 2009

Вы можете использовать WMI (Инструментарий управления Windows) следующим образом:

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

Хотя я читал о случаях, когда серийный номер не возвращается с использованием WMI. Другой способ сделать это - воспользоваться сервисами вызова платформы (PInvoke).

Эта статья включает загрузку, в которой автор реализует CreateFile () и DeviceIoControl () для извлечения информации о накопителе через службы Interop в VB .NET.

Чтобы использовать любой из вышеперечисленных методов, вам потребуются права ADMIN. Утилита, которая может обойти это, может быть найдена здесь . Если вы любите приключения, вы можете просмотреть исходный код C ++ / Win32 . (Проверьте функцию «ReadPhysicalDriveInNTWithZeroRights ()»)

1 голос
/ 16 июня 2017
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
0 голосов
/ 16 августа 2013

Вот код для получения серийного номера жесткого диска

    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

Надеюсь, это поможет.

...