0
デバイスの一意の識別子を生成するために、コンピュータからオンボードのイーサネットアダプタのMACアドレスを取得しようとしています。以下は、私が使用しているアプローチです。コンピュータのオンボードイーサネットMACアドレスを取得するにはどうすればいいですか?
NetworkInterface[] ifConfig = NetworkInterface.GetAllNetworkInterfaces();
int maxHash = int.MinValue;
Guid D = Guid.Empty;
foreach (NetworkInterface net in ifConfig)
{
if (net.NetworkInterfaceType == NetworkInterfaceType.Ethernet)
{
if (maxHash < net.GetPhysicalAddress().ToString().GetHashCode())
{
maxHash = net.GetPhysicalAddress().ToString().GetHashCode();
ID = new Guid(String.Concat("00000000-0000-0000-0000-", net.GetPhysicalAddress().ToString()));
}
}
}
しかし、Bluetoothアダプタ、VMアダプタおよび他のいくつかのネットワークアダプタもNetworkInterfaceType.Ethernet
タイプのです。オンボードのイーサネット接続のMACアドレスを取得するにはどうすればよいですか?
これらを省略するためのcontainsを実行することはできません。どんな助けでも大歓迎です。
これは悪い考えです。主にMACアドレスが一意ではないためです。仮想マシンを(クローンした)仮想マシンとみなすと、これはさらに悪化します。 https://superuser.com/a/968346 –
@SteffenWinklerを参照してください。それにもかかわらず、それはFlexLMなどで使用されているような実際の業界標準アプローチです。代わりに何がありますか? –
@HarryJohnston私が言ったように、Guidを生成して使用することができます。現実の衝突の可能性は存在しないので、あなたはそのクライアントを行うことができます。ハードウェア側では、コンピュータを識別するために何も使用できません。 1つの理由は仮想マシンであり、もう1つはネットワークカードの交換やGPUの追加などのコンピュータの変更です。ハードウェアを変更(欠陥)すると、そのコンピュータのIDが変更されます。 –