これが私が思いついたものです(Win7 64ビット):
var query = new SelectQuery("Win32_NetworkAdapter");
var scope = new ManagementScope("\\root\\cimv2");
scope.Connect();
var searcher = new ManagementObjectSearcher(scope, query);
var managementObjects = searcher.Get();
foreach (var mo in managementObjects)
{
Debug.WriteLine("{0} : {1}", mo["Description"], mo["MACAddress"]);
}
私のBluetoothアダプタは次のようになります。
Bluetooth デバイス (パーソナル エリア ネットワーク) : 70:F3:95:88:F7:7E
ただし、無効にすると、MAC アドレスは空白として表示されます。
アダプターを有効/無効にして、クラスのメソッドを介して MAC を照会できるはずですが、Win32_NetworkAdapter クラスを手動でラップする必要があるため、少し面倒です。
.Net Framework SDK ツール 'mgmtclassgen.exe' を使用して、WMI オブジェクトのクラス ラッパーを生成する必要があります。
次のように呼び出します (生成されるファイルは 80k です)。
mgmtclassgen Win32_NetworkAdapter -p NetworkAdapter.cs
次に、次のようにコードを拡張します。
var query = new SelectQuery("Win32_NetworkAdapter");
var scope = new ManagementScope("\\root\\cimv2");
scope.Connect();
var searcher = new ManagementObjectSearcher(scope, query);
var managementObjects = searcher.Get();
var adapters = managementObjects.Cast<ManagementBaseObject>().Select(s => new NetworkAdapter(s));
foreach (var adapter in adapters)
{
adapter.Enable();
Console.WriteLine("{0} : {1}", adapter.Name, adapter.MACAddress);
}
しかし、Enable() を呼び出したときに何も起こらず、戻りコードが 0 だったので、機能させることができませんでした。あなたまたは誰かが不足している詳細を推測して機能させることを期待して投稿しました。