1

バイナリファイルは、ドングルとして使用されるUSBキーにあります。

キーから一意の識別子を取得する必要があります。USBキーのモデルが同じであれば、VendorID + DeviceIDは同じである可能性があるため、問題外です。

Windowsを使用して、デバイスがフォーマットされるたびに変更されるシリアル番号GetVolumeInformation()を取得する機能を使用します(問題ありません)。

Unixを使用して同じシリアル番号を取得するには、ディレクトリ内の対応するマウントファイルを読み取る必要があります/dev/。ただし、この操作にはrootアクセスが必要です。または、少なくとも特定のグループの一部である必要があります。

一意の識別子は、Win32システムにあるシリアル番号とは異なる場合があります。ただし、配信に使用するUSB​​キーごとに異なる必要があります。

何か案は ?

4

3 に答える 3

1

/dev/disk/by-uuid/あなたはディレクトリを見ることができます。デバイスノードへのシンボリックリンクがあり、シンボリックリンク名はパーティションのIDです。

于 2012-05-15T08:30:40.413 に答える
0

ここにいくつかのアイデアがあります:

  • デバイスはシステムに自動マウントされていますか?その場合、オートマウンターによってデバイス名でマウントされる可能性があり、mountコマンドによってデバイス名が通知されます。たとえば、何かがマウントされるの/media/ABCD-1234ABCD-1234、パーティションテーブルで提供されるデバイス名です。
  • ファイルシステムには/sys、デバイスに関するいくつかの情報があります。1つは、各パーティションのサイズです。デバイスに複数のパーティションを配置し、特定のサイズの1つのフォーマットされていないパーティション(マウントされない)を使用できます。その場合、そのパーティションのサイズはシリアル番号になります。たとえば、で利用できます/sys/block/sdb/sdb1/size。これは誰でも読み取り可能です。
于 2012-05-15T08:39:24.870 に答える
0

dfコマンドを使用して/devファイルを取得することでシリアル番号を取得できました

このコードを使用して少し変更したよりも:

LinuxC++でのUSBドライブのシリアル番号

3番目の答え(Orwellophileの)

これがすべてのUnixシステムで機能するかどうかはわかりませんが、今のところは問題ありません。

于 2012-05-23T09:33:49.027 に答える