!!!请教高手怎样在winform中获得网关,网卡(mac)地址?!!!

解决方案 »

  1.   

    using System.Management;
    static DnsQuery()
    {
    string[] dnses;
    ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
    ManagementObjectCollection moc = mc.GetInstances(); //枚举当前机子上的所有网卡
    foreach(ManagementObject mo in moc)
    {
    if((bool)mo["ipEnabled"])
    {
    dnses = (string[])mo["DNSServerSearchOrder"];
    if (dnses!=null)
    {
    dnsServer=dnses[0]; //使用第一个找到的DNS服务器。
    }
    }
    }
    }
      

  2.   

    .net/C#中没有现成的方法可以获取机器的MAC,System.net命名空间下只能获取一些比较简单的Dns信息,比如用户名等。现在使用两种方法获取机器的MAC:调用API和使用操作系统命令。不过这两个途径都存在自身的不足。       API:源码如下[DllImport("Iphlpapi.dll")]
      private static extern int SendARP(Int32 dest,Int32 host,ref Int64 mac,ref Int32 length);
      [DllImport("Ws2_32.dll")] 
      private static extern Int32 inet_addr(string ip);  /// 
      /// 根据ip得到网卡mac地址
      /// 
      /// 给出的ip地址
      /// 对应ip的网卡mac地址
      public static Int64 GetMACByIP(string ip) 
      { 
       Int32 ldest= inet_addr(ip); //目的地的ip 
       try 
       { 
        Int64 macinfo = new Int64(); 
        Int32 len = 6; 
        int res = SendARP(ldest,0, ref macinfo, ref len); 
        return macinfo; 
       } 
       catch(Exception err) 
       { 
        Console.WriteLine("Error:{0}",err.Message); 
       } 
       return 0; 
      }