Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'1番目の方法
Dim Objquery As New Management.ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE MACAddress is not null")
Dim ObjCollection As Management.ManagementObjectCollection = Objquery.Get
Dim Obj As Management.ManagementObject
For Each Obj In ObjCollection
If (CType(Obj("IPEnabled"), Boolean) = True) Then
Label1.Text = Replace(Obj("MacAddress"), ":", "")
End If
Next
'2番目の方法
Dim computerProperties As IPGlobalProperties = IPGlobalProperties.GetIPGlobalProperties()
Dim nics As NetworkInterface() = NetworkInterface.GetAllNetworkInterfaces()
Dim adapter As NetworkInterface
For Each adapter In nics
Label2.Text = adapter.GetPhysicalAddress().ToString()
Exit For
Next adapter
End Sub
いつもお世話になっております。
以上の2種類の方法のどちらかでMACアドレスを取得したいのですが、あいにく知識不足で、どちらの方がより高い確率で取得できるのでしょう。
ちなみにソースを見る限り、IPアドレスなどは複数持つことができるようです。かなりかなり不安です。
お願いいたします。
No.2ベストアンサー
- 回答日時:
詳しいくないので、役に立たない情報かも知れませんが……
> ネットワークの設定が不十分の場合、
物理的に NIC が端末に接続されていたとしても Windows から認識されていない状態と
「無効」としている場合も取得できないと思います。
(ドライバのインストールは完了していて、デバイスとして認識されていても)
> 物理的なものと、もう一つ「MSアダプタ!?」みたい論理的
Visual Basic 2005 で可能な方法でということと、NIC の種別を絞りこむということであれば
下記のようなもの組み合わせれば可能かも知れません。
1. NetworkInterfaceType 見れば Ethernet であると判断できます。
2. Description の値からはデバイスマネージャに出てくるものと同じようなものが得られるので
ある程度は判断の参考にはなるかと思います。
※ 記述例としてはこんな感じ
Label2.Text = adapter.Description
3. MAC アドレスの 24 ビットはベンダIDになっているのでそれで識別するという方法も
ありますが、リストを持っている必要があるのであまり現実的ではないと思われます。
※ 次のようなサイトで検索して探すことも可能ですが……
Vendor/Ethernet MAC Address Lookup and Search
http://www.coffer.com/mac_find/
> 目的は、このパソコンはユニークの個体であるのを判別
※ これは余計なことなのでスルーして頂いてかまいません。
# ソフトウェアの使用制限にでもお使いになるのでしょうか?
# だとしたら、どれを使って登録するかをユーザに選ばせてその条件で
# 登録コードなどを発行するほうが無難ではないでしょうか?
No.1
- 回答日時:
> どちらの方がより高い確率で取得できるのでしょう。
コードからして、おそらく .NET Framework 環境だとは思いますが
個人的には「二番目」のほうが無難かと思います。
読解力不足で申し訳ありませんが、この「より高い確立」とは何を
意味されてのことでしょうか?
このコードで気になるのは次のことです。
# 動作確認のためのコードでこうなっているだけかとは思いますが
※ 引用が前後してしまいますが
> For Each adapter In nics
> Label2.Text = adapter.GetPhysicalAddress().ToString()
> Exit For
NIC が複数存在する場合、最初に見付かった NIC が必ずしも所望の
インターフェースであるとは限らないので、限られた環境(NIC が
一つしかない)の場合以外で運用される場合は避けるべきではない
でしょうか?
この回答への補足
ご回答ありがとうございます。薄識のため、万が一適当なことを言ったらごめんなさい。VB2005です。ちなみに上のソースコードは
System.Managementに参照設定、Imports System.Net.NetworkInformationを追加する必要があります。
>「より高い確立」とは何を意味されてのことでしょうか?
聞いた話ではありますが、ネットワークの設定が不十分の場合、接続中のケーブルの刺し抜きとか、ネットワークアダプタがあっても必ず取得できるとは限らないそうです。(これはWindowsの仕様ですと言う方もいます)
>NIC が複数存在する場合
ここらへんがよく分かりません、一つしかない環境でも物理的なものと、もう一つ「MSアダプタ!?」みたい論理的なものがあって、一つ目だけを取得しようとしたため、このようなソースコードになっております。
目的は、このパソコンはユニークの個体であるのを判別するためするためです。通信など高度なことに挑戦していませんが、確実にMACアドレスを取得したいです。
お願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
高校生はアルバイトするべきだろうか?賛成だったら「賛」、否定だったら「否」を文頭においてあなたの意見を教えてください。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
エクセルのマクロでMACアドレスを確認させる方法を教えてください
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB.NETで DataRow()を利用して...
-
VBA:小数点以下の数字を取得で...
-
Flexgridで選択行の列の値を取...
-
VBAでActiveDirectoryのユーザ...
-
count(*)で取得した値をJAVAの...
-
利用者側のMACアドレスを取得し...
-
コンボボックス表示文字列を取...
-
UWSCでhtmlソースの文字列を取...
-
DOS窓の非表示
-
URIでのページの移動について
-
VB .netにて現在時刻+1時間後...
-
特定のウィンドウのキャプチャ...
-
タイマーオブジェクトを利用し...
-
ListView 項目の選択/選択解除...
-
.NETで現在時刻を常に動作させ...
-
VBA Shapesの座標からセル位置...
-
JSP+Servletでのページングの常識
-
JavaScriptで毎日カウントダウ...
-
エクセルVBAで範囲内での位置取...
-
COMポート 名前を取得する方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NETで DataRow()を利用して...
-
count(*)で取得した値をJAVAの...
-
VBAでActiveDirectoryのユーザ...
-
VBA:小数点以下の数字を取得で...
-
ListView 項目の選択/選択解除...
-
データ数をカウントしたいのですが
-
Spreadの選択行の取得について
-
利用者側のMACアドレスを取得し...
-
JavaScriptにおいてコンピュー...
-
Flexgridで選択行の列の値を取...
-
VBA Shapesの座標からセル位置...
-
like演算子内に変数って使えな...
-
JavaScriptでWindowsログオンID...
-
IFRAME内のURLを取得したです。
-
ListViewで複数選択された項目...
-
Google Apps Script で、Web上...
-
URIでのページの移動について
-
NTPサーバから時刻を取得する
-
「Excel VBA」 Webクエリ マク...
-
VB .netにて現在時刻+1時間後...
おすすめ情報