MACアドレスを取得する

パソコンを個体特定するには色々な方法がありますが、おそらく一番簡単な方法はMACアドレスを調べる方法です。

まず、自分のPCの MAC アドレスを調べるには、コマンドプロンプトや PowerShell を起動して

ipconfig /all

または

getmac

というコマンドをうちこんでください。

ずらずら結果が出てきますが、ここの 「物理アドレス」 で示されている値が MAC アドレスになります。

以下にソースコードを示します。using System.Net.NetworkInformation; をお忘れなく。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;


using System.Net.NetworkInformation;


namespace aaa
{
	public partial class Form1 : Form
	{
		public Form1()
		{
			InitializeComponent();
		}

		private void button1_Click( object sender, EventArgs e )
		{

			// 結果を格納するリスト.
			List<PhysicalAddress> list = new List<PhysicalAddress>();

			// OSが認識しているすべてのネットワークインターフェースの情報を取得する.
			NetworkInterface[] arr_nif = NetworkInterface.GetAllNetworkInterfaces();

			// ここでその中から物理アドレスに関係するものだけをリストアップする.
			for ( int k = 0; k < arr_nif.Length; k++ )
			{

				NetworkInterface nif = arr_nif[k];

				// ネットワーク接続として有効なものか調べる.
				if ( OperationalStatus.Up == nif.OperationalStatus )
				{

					// ネットワークインターフェースのタイプを取得する.
					NetworkInterfaceType nif_type = nif.NetworkInterfaceType;

					// そのタイプを調べる.
					if ( nif_type != NetworkInterfaceType.Unknown )
					{
						// そのタイプを調べる.
						if( nif_type != NetworkInterfaceType.Loopback )
						{
							// ここまでくると物理アドレスとして確定なのでリストに加える.
							list.Add( nif.GetPhysicalAddress() );
						}
					}

				}
			}

			if ( list != null )
			{
				if ( list.Count > 0 )
				{

					StringBuilder sb = new StringBuilder();

					for ( int n = 0; n < list.Count; n++ )
					{

						String str = "";

						// リストからMACアドレスが格納されているバイト配列を取り出す.
						byte[] arr = list[n].GetAddressBytes();

						// バイト配列を文字列に変換する.
						for ( int nn = 0; nn < arr.Length; nn++ )
						{
							str += String.Format( "{0:x2}-", arr[nn] );
						}

						// 最後についている - が無駄なので削除する.
						str = str.TrimEnd( '-' );

						sb.AppendLine( str );

					}

					// MACアドレスを表示する.
					MessageBox.Show( sb.ToString().Trim() );

				}
				else
				{
					MessageBox.Show( "MACアドレスが取得できませんでした.\r\nlist.Count is 0" );
				}
			}
			else
			{
				MessageBox.Show( "MACアドレスが取得できませんでした.\r\nlist is null" );
			}

		}
	}
}