Получить серийный номер съемного жесткого диска USB в VB6 - PullRequest
0 голосов
/ 22 февраля 2011

Пытаетесь получить серийный номер производителя (не номер тома) внешних жестких дисков или дисков USB?

[ПРАВИТЬ] Я еще не знаю или у меня нет кода, как это сделать.предыдущий метод, который я попробовал, вернул только серийный номер тома

1 Ответ

1 голос
/ 23 февраля 2011

Вы можете использовать WMI для получения этой информации.Серийные номера жесткого диска указаны в Win32_PhysicalMedia.Я не собираюсь тратить время на написание кода здесь;если у вас есть опыт запроса WMI в VB 6, вы сможете сделать это без особых проблем.В противном случае ищите образец кода онлайн.Вы не найдете ничего особенного в отношении серийных номеров жестких дисков, но вы найдете множество примеров WMI.

Вам надоело, что вы не всегда получите серийный номер в формате, который выожидаешь.Например, комментарии к этой статье указывают, что вы можете получить что-то вроде:

Серийный номер: 4a3532544e464137202020202020202020202020

, в этом случае у вас будетдля декодирования серийного номера:

  1. Преобразовав в шестнадцатеричные байты, мы получаем следующее (0x20 - пустой символ и обрезается):

    0x4a, 0x35, 0x32, 0x54, 0x4e, 0x46, 0x41, 0x37
    
  2. Замена нечетных и четных байтов приводит к следующему:

    0x35, 0x4a, 0x54, 0x32, 0x46, 0x4e, 0x37, 0x41
    
  3. Приведенные выше коды ASCII равны строке серийного номера:

    "5JT2FN7A"
    

Я также не уверен, что все внешние / съемные жесткие диски предоставляют эту информацию.Ваш пробег может отличаться, но предлагаемый метод отлично работает на внутренних жестких дисках.


В качестве альтернативы, вы можете сделать это с помощью низкоуровневых API-интерфейсов Windows, таких как DeviceIOControl.Вам нужно будет добавить объявления для необходимых функций в модуль в вашем приложении VB 6. Эта статья о Code Project должна помочь вам начать;код написан на нативном C ++ и предназначен для использования такими языками .NET, как C #, но я не вижу трудностей в адаптации кода к VB 6.

...