真のハードウェアMACアドレスを取得する方法[閉じた
-
21-09-2019 - |
質問
この質問は何度も作成されたことを知っていますが、それは開いています
問題は次のとおりです。
私のアプリケーションは、コンピューター用のUIDを生成する必要があります。本物の保護を実装するために必要です。
Macアドレスは、各イーサネットカードにユニークであるため、優れた候補です。
多くの記事では、getadaptersinfo、WMI、netBios、またはソケットのいずれかを使用しています。
これがその1つです: Macアドレスを取得する3つの方法。
彼らは海岸、MACアドレスを返しますが、このアドレスはアダプタープロパティから手で設定できます
Control Panel > Network and Internet > Network and Sharing Center > Change Adatper Settings > right click on adapter > Properties > click "configure" button > go to "Advanced" tab > chose "Network Address" and change it
すべての言及された方法は私のニーズと一致しません。なぜなら、ドライバーで設定されるMacアドレスは、真のハードウェアMACアドレスよりも優先度が高いからです。この「偽の」アドレスは、すべてのWIN API関数によって返されます。
あなたからの助け、みんなは大歓迎です。
ありがとう。
解決
WindowsがMACアドレスにアクセスする必要があることは、ドライバーに尋ねることです。
それがドライバーの目的です - ハードウェアに話しかけて、Windowsが誰もが思いつくすべてのデバイスにコードを含める必要がないように。
ドライバーがWindowsにMACアドレスが何かであることを伝えている場合、それがMACアドレスです。
他のヒント
Macアドレスは、各イーサネットカードにユニークであるため、優れた候補です。
そうではないと思います。まず、同一のMACアドレスを持つマシンのバッチ全体を受け取っている顧客のレポートを読みました(クラスターを構築するときにこれは痛みを引き起こすようです)。
また、再起動時にMACアドレスを変更するマシンを自分の目で見ました。毎回。 Windows XPを実行している古いIBM ThinkPadでした。
私のアドバイス:一意のIDを生成している場合は、MACアドレスから十分に離れてください。
あなたが言及する「ネットワークアドレス」はMACアドレスを指すとは思わない。一部のデバイスでは、ISPの目的でMacアドレスを「スプーフィング」することができますが、見つけた方法を使用して実際のMacを取得できるはずです。