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