推荐有两种方法,你试试
一、用nbtstat -A ip 命令,用.net中ProcessStartInfo和Process类取得命令输出,最后一行就是mac地址 MAC Address.
二、用.net中的wmi:System.Management namespace  hosted in System.Management.dll Assembly
例:
   ManagementObjectSearcher query = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration");
   ManagementObjectCollection list = query.Get();   foreach(ManagementObject mo in list)
   {
     if( mo["macaddress"]!=null)
     {
       Console.WriteLine("IP address: "+((string[])mo["IPAddress"])[0]);
       Console.WriteLine("MAC Address: "+ mo["macaddress"].ToString());
      }
   
   }
hope it helps

解决方案 »

  1.   

    转个朋友贴的文章如果要想获得远程的地址,需要用sendarp这个函数来实现。具体的代码如下:
    [DllImport("Iphlpapi.dll")]
    private static unsafe extern int SendARP(Int32 dest,Int32 host,ref IntPtr mac,ref IntPtr length);
    [DllImport("Ws2_32.dll")]
    private static extern Int32 inet_addr(string ip);Int32 ldest= inet_addr("157.60.68.163");//目的地的ip
    Int32 lhost= inet_addr("157.60.68.33");//本地的iptry
    {
    Byte[] macinfo=new Byte[6];
    Int32 length=6;

    IntPtr mac=new IntPtr(macinfo[0]);
    IntPtr len=new IntPtr(6);
    int ii=SendARP(ldest,lhost, ref mac, ref len);

    Console.WriteLine("Mac Add:"+mac);
    Console.WriteLine("length:"+len);
    }
    catch(Exception err)
    {
    Console.WriteLine(err);
    }
      

  2.   

    我这里怎样没有 System.Management 名词空间?
      

  3.   

    添加引用->.net-> System.Management
      

  4.   

    using System.Management;
    .....