web-dev-qa-db-ja.com

USBデバイスを一意に識別する方法は?

オペレーティングシステムがMac-ID、ハードディスクID、イーサネットカードIDが一意の識別子を持っているように、USBデバイスを一意の識別子で識別することは可能ですか? USBパーティションのボリュームシリアル番号を簡単に変更できること、またはユーザーがフォーマットするときに変更できることを私は知っています。

しかし、WMIサービスを使用してMFC(Visual C++またはC#)を介して取得できる「USBハードディスクIDまたはUSBハードウェアID」のようなIDはありますか?そのような識別子は物理デバイスに固有ですか?明確にしてください...

17
highlander141

USBデバイスで使用可能な「一意の番号」に最も近いのは、VIDとPID、ベンダーと製品のIDです。これは、デバイスを識別し、適切なドライバーをインストールするために使用されます。ただし、これは同じ製品の同じ番号のセットであり、手に持っている特定のデバイスを識別するのに十分ではありません。したがって、ライセンス検証手順、おそらくあなたが求めているものを実装するのは無意味です。

特定の種類のUSBデバイスのみがシリアル番号を実装します。ドライブフォーマッタがボリュームシリアル番号を生成するため、フラッシュドライブから誤って取得します。役に立たないので、簡単に変更できます。 USB Wi-Fiアダプターが機能する可能性があり、製造元は一意のMACアドレスを生成する必要があります

この目標に完璧であるUSBデバイスの1つのクラスがあります。総称は「ドングル」で、このために作られています。購入すると、プログラムにリンクできるソフトウェアも入手できます。このソフトウェアは、ライセンス番号を改ざん防止する方法を提供します。これは、ライセンス検証手順のもう1つの重要な部分であり、通常は弱いリンクです。このドングルの詳細 ウィキペディアの記事

19
Hans Passant