2010-06-22 11 views
4

Я ищу, чтобы получить серийный номер с USB-накопителя на окнах в C++.Получить серийный номер USB C++

Я нашел много примеров C# и C++ для linux, но не для C++ и windows.

Редактировать

  • C++/CLI не вариант, к сожалению.
  • Я ищу серийный номер устройства, а не файловую систему. ИЛИ «Путь экземпляра устройства» AKA «InstanceID»
+1

Если параметр C++/CLI является опцией, вы можете использовать тот же метод, что и существующие примеры C#. Или вы можете опубликовать ссылку на один из примеров .NET (C#), и кто-то может знать способ перевести это на Win32 (C) для вас. –

+0

Примеры C# будут переводимыми. Вы говорите о серийном номере устройства или файловой системы? –

+0

Этот вопрос показывает решение .net http://stackoverflow.com/questions/450009/how-to-get-serial-number-of-usb-stick-in-c – danatel

ответ

3

Если требуется C++, вам придется писать COM-код. Немного не нравится по сравнению с кодом VB.NET, но есть очень хорошие примеры, доступные в MSDN library, вам просто нужно адаптировать запрос.

Остерегайтесь того, что в приведенном примере нет, возвратите серийный номер самого устройства, только файловую систему на устройстве. Что так же хорошо, как это получится, устройства USB не имеют серийных номеров.

Серийные номера файловой системы тривиальны для дублирования, если вы планируете это написать какую-то схему принудительного лицензирования. Если это важно, вы должны использовать USB-устройство, предназначенное для этой цели. Дверь. Невозможно взломать. И код C++ для проверки лицензии будет доступен от производителя.

+0

Да, именно это я и собирался использовать для этого серийного номера. Система лицензирования. Как бы вы изменили «серийные номера файловой системы»? –

+0

Вы говорите о GetVolumeInformation(), я знаю, что этот бит, если информация меняется каждый раз, когда диск является форматом. Утилита для его изменения «на лету»: http://www.codeproject.com/kb/system/change_drive_sn.aspx Но я ничего не слышал о том, что изменение меняет «путь экземпляра устройства» или «идентификатор экземпляра» устройство. –

+3

Большинство устройств USB имеют серийные номера.Если вам нужен фактический серийный номер устройства, вам необходимо сопоставить USB-устройства с дисковыми томами. См. Мой ответ и ссылку на статью о том, как это сделать ниже. –

1

Серийный номер подключ под HKLM\SYSTEM\CCS\Enum\USB\Vid_xxxx&Pid_yyyy

6

У меня есть статья о том, как получить серийные номера USB для томов в C++, без использования WMI

http://oroboro.com/usb-serial-number/

Существует трюк, чтобы делать вам нужно сопоставить USB-устройства с дисковыми томами. Вы хотите избежать WMI, если можете, потому что это ненадежно.

Смежные вопросы