Вы можете использовать WMI для получения этой информации.Серийные номера жесткого диска указаны в Win32_PhysicalMedia
.Я не собираюсь тратить время на написание кода здесь;если у вас есть опыт запроса WMI в VB 6, вы сможете сделать это без особых проблем.В противном случае ищите образец кода онлайн.Вы не найдете ничего особенного в отношении серийных номеров жестких дисков, но вы найдете множество примеров WMI.
Вам надоело, что вы не всегда получите серийный номер в формате, который выожидаешь.Например, комментарии к этой статье указывают, что вы можете получить что-то вроде:
Серийный номер: 4a3532544e464137202020202020202020202020
, в этом случае у вас будетдля декодирования серийного номера:
Преобразовав в шестнадцатеричные байты, мы получаем следующее (0x20 - пустой символ и обрезается):
0x4a, 0x35, 0x32, 0x54, 0x4e, 0x46, 0x41, 0x37
Замена нечетных и четных байтов приводит к следующему:
0x35, 0x4a, 0x54, 0x32, 0x46, 0x4e, 0x37, 0x41
Приведенные выше коды ASCII равны строке серийного номера:
"5JT2FN7A"
Я также не уверен, что все внешние / съемные жесткие диски предоставляют эту информацию.Ваш пробег может отличаться, но предлагаемый метод отлично работает на внутренних жестких дисках.
В качестве альтернативы, вы можете сделать это с помощью низкоуровневых API-интерфейсов Windows, таких как DeviceIOControl
.Вам нужно будет добавить объявления для необходимых функций в модуль в вашем приложении VB 6. Эта статья о Code Project должна помочь вам начать;код написан на нативном C ++ и предназначен для использования такими языками .NET, как C #, но я не вижу трудностей в адаптации кода к VB 6.