質問

この質問は何度も作成されたことを知っていますが、それは開いています

問題は次のとおりです。

私のアプリケーションは、コンピューター用の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を取得できるはずです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top