Вы можете использовать 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. Другой способ добиться этого будет через Platform Invocation Services (PInvoke).
This статья содержит загрузку, в которой автор реализует CreateFile() и DeviceIoControl() для извлечения информации о диске через службы Interop в VB .NET.
Чтобы использовать любой из описанных выше способов, вам понадобятся права ADMIN, утилита, которая, кажется, обходит это, может быть найдена here. Если ваше чувство приключений для C++/Win32 source code доступно для ознакомления. (Проверьте 'ReadPhysicalDriveInNTWithZeroRights()' функции)
Это отмеченное как низкое качество. Пожалуйста, разверните только свой код, чтобы объяснить, что делает код. – Bugs