1

この質問は何度も作成されたと思いますが、まだオープンです

問題は次のとおりです。

私のアプリケーションは、コンピューター用のUIDを生成する必要があります。本物の保護を実装するために必要です。

MACアドレスは、イーサネットカードごとに一意であるため、適切な候補です。

多くの記事では、GetAdaptersInfo、WMI、NetBIOS、またはSocketsのいずれかを使用しています。

そのうちの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関数によって返されるため、本物の保護が簡単に破られる可能性があります。

皆さん、あなたからの助けは大歓迎です。

ありがとう。

4

3 に答える 3

6

WindowsがMACアドレスにアクセスしなければならない唯一の手段は、ドライバーに尋ねることです。

それがドライバーの目的です。ハードウェアと通信して、Windowsに、誰もが思いつく可能性のあるすべてのデバイスのコードを含める必要がないようにします。

ドライバーがWindowsにMACアドレスが何かであると伝えている場合、それがMACアドレスです。

于 2010-01-18T21:36:22.707 に答える
1

MACアドレスは、イーサネットカードごとに一意であるため、適切な候補です。

そうではないと思います。最初に、同じMACアドレスを持つマシンのバッチ全体を受け取っている顧客のレポートを読みました(明らかに、これはクラスターを構築するときに苦痛を引き起こします)。

また、再起動時にMACアドレスを変更するマシンを自分の目で見ました。毎回。これは、WindowsXPを実行している古いIBMThinkpadでした。

私のアドバイス:一意のIDを生成する場合は、MACアドレスに近づかないでください。

于 2010-01-27T22:06:41.870 に答える
0

あなたが言う「ネットワークアドレス」はMACアドレスを指しているとは思いません。一部のデバイスでは、ISPの目的でMACアドレスを「スプーフィング」できますが、見つけた方法を使用して実際のMACを取得できるはずです。

于 2010-01-18T21:36:14.967 に答える