4

私が取り組んでいるプログラムは、Windows RPC API 呼び出し UuidCreateSequential() によって生成された UUID に、プライマリ イーサネット アダプターの MAC アドレスが含まれていることを前提としています。この仮定は正しいですか、それとも別の方法を使用して MAC アドレスを取得する必要がありますか?

4

4 に答える 4

6

私はこれに頼りません - UuidCreateSequential が MAC アドレスを持つ唯一の理由は、UUID がネットワーク全体で一意であることを保証しようとしているからです。さらに、なぜ MAC アドレスを取得するために、このような奇妙な方法を使用するのでしょうか? WMI を使用して、UUID 作成機能の副作用ではなく、実際にMAC アドレスを要求します。

于 2008-12-01T03:17:54.427 に答える
4

これは有効な仮定のようです。MSDNのドキュメントでは、これにはマシン上のイーサネット カードのアドレスが含まれると具体的に述べられています。マルチカード シナリオについては何も言及されていませんが、プライマリ カードを選択することは論理的な飛躍のようです。

于 2008-12-01T03:16:29.720 に答える
3

マネージ コードを記述している場合は、NetworkInterfaceクラスを使用して を呼び出しますGetAllNetworkInterfaces()。または、C++ コードから を呼び出しますGetAdaptersInfo。これは、マネージ実装が使用するものです。

これで機能する場合でもUuidCreateSequential、情報を取得する方法はかなりあいまいであり、コンピューターに複数のアダプターがあるなどの潜在的な問題が隠されています。

于 2008-12-01T03:40:30.357 に答える
1

バージョン 1 の UUID のみに MAC アドレスが含まれており、元のジェネレーターが最初から MAC アドレスにアクセスできる場合に限ります。元のジェネレーターが MAC アドレスにアクセスできなかった場合、RFC 4122 のセクション 4.5 に従って、暗号的に安全な乱数ジェネレーターから供給された 6 ランダム バイトを使用していたでしょう。このため、MAC アドレスがUUID で指定されるのは、実際には MAC アドレスです。

ほとんどの場合、UUID から MAC アドレスを解析する必要がある唯一の理由は、法医学的な目的のためです。たとえば、Melissa ウイルスの Word ドキュメント ペイロードに埋め込まれた UUID を参照してください。捜査官は、これらの ID から MAC アドレスを抽出し、容疑者のプライマリ ネットワーク アダプターの MAC アドレスと照合しました。

自分のコンピュータの MAC アドレスを取得しようとしている場合は、はるかに優れた方法があります。

于 2009-04-24T17:04:50.613 に答える