Получите серийный номер H/D (не серийный номер тома) для IDE и SATA.

StackOverflow https://stackoverflow.com/questions/535902

  •  22-08-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

Вы можете использовать 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).

Этот статья включает загрузку, в которой автор реализует СоздатьФайл() и УстройствоИоКонтроль() для извлечения информации о диске через службы взаимодействия в VB .NET.

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

Другие советы

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

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

    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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top