Получите серийный номер H/D (не серийный номер тома) для IDE и SATA.
-
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
Надеюсь, поможет.