获取本机的MAC的方法
1。用C#调用DOS命令获取本机网卡的MAC地址
System.Diagnostics.Process p=new System.Diagnostics.Process();
p.StartInfo.CreateNoWindow=true;
p.StartInfo.UseShellExecute=false;
p.StartInfo.RedirectStandardOutput=true;
p.StartInfo.FileName="ipconfig";
p.StartInfo.Arguments="/all";
p.Start();
p.WaitForExit();
string s=p.StandardOutput.ReadToEnd();
MessageBox.Show(s.Substring(s.IndexOf("Physical Address. . . . . . . . . :")+36,17));
2。使用API,利用ARP协议,只能获得同网段计算机的MAC
#region By ARP

 [DllImport("Iphlpapi.dll")]
        [DllImport("Iphlpapi.dll")]
 private static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length);
        private static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length);

 [DllImport("Ws2_32.dll")]
        [DllImport("Ws2_32.dll")]
 private static extern Int32 inet_addr(string ip);
        private static extern Int32 inet_addr(string ip);

 public static string GetMacByARP(string clientIP)
        public static string GetMacByARP(string clientIP)

 
         {
{
 string ip = clientIP;
            string ip = clientIP;
 Int32 ldest = inet_addr(ip);
            Int32 ldest = inet_addr(ip);
 Int64 macinfo = new Int64();
            Int64 macinfo = new Int64();
 Int32 len = 6;
            Int32 len = 6;
 try
            try

 
             {
{
 SendARP(ldest, 0, ref macinfo, ref len);
                SendARP(ldest, 0, ref macinfo, ref len);
 }
            }
 catch
            catch

 
             {
{
 return "";
                return "";
 }
            }
 string originalMACAddress = Convert.ToString(macinfo, 16);
            string originalMACAddress = Convert.ToString(macinfo, 16);
 if (originalMACAddress.Length < 12)
            if (originalMACAddress.Length < 12)

 
             {
{
 originalMACAddress = originalMACAddress.PadLeft(12, '0');
                originalMACAddress = originalMACAddress.PadLeft(12, '0');
 }
            }
 string macAddress;
            string macAddress;
 if (originalMACAddress != "0000" && originalMACAddress.Length == 12)
            if (originalMACAddress != "0000" && originalMACAddress.Length == 12)

 
             {
{
 string mac1, mac2, mac3, mac4, mac5, mac6;
                string mac1, mac2, mac3, mac4, mac5, mac6;
 mac1 = originalMACAddress.Substring(10, 2);
                mac1 = originalMACAddress.Substring(10, 2);
 mac2 = originalMACAddress.Substring(8, 2);
                mac2 = originalMACAddress.Substring(8, 2);
 mac3 = originalMACAddress.Substring(6, 2);
                mac3 = originalMACAddress.Substring(6, 2);
 mac4 = originalMACAddress.Substring(4, 2);
                mac4 = originalMACAddress.Substring(4, 2);
 mac5 = originalMACAddress.Substring(2, 2);
                mac5 = originalMACAddress.Substring(2, 2);
 mac6 = originalMACAddress.Substring(0, 2);
                mac6 = originalMACAddress.Substring(0, 2);
 macAddress = mac1 + "-" + mac2 + "-" + mac3 + "-" + mac4 + "-" + mac5 + "-" + mac6;
                macAddress = mac1 + "-" + mac2 + "-" + mac3 + "-" + mac4 + "-" + mac5 + "-" + mac6;
 }
            }
 else
            else

 
             {
{
 macAddress = "";
                macAddress = "";
 }
            }
 return macAddress.ToUpper();
            return macAddress.ToUpper();
 }
        }

 public static IPAddress[] GetLocalIP()
        public static IPAddress[] GetLocalIP()

 
         {
{
 string hostName = Dns.GetHostName();
            string hostName = Dns.GetHostName();
 IPHostEntry ipEntry = Dns.GetHostByName(hostName);
            IPHostEntry ipEntry = Dns.GetHostByName(hostName);
 return ipEntry.AddressList;
            return ipEntry.AddressList;
 }
        }

 #endregion
        #endregion
System.Diagnostics.Process p=new System.Diagnostics.Process();
p.StartInfo.CreateNoWindow=true;
p.StartInfo.UseShellExecute=false;
p.StartInfo.RedirectStandardOutput=true;
p.StartInfo.FileName="ipconfig";
p.StartInfo.Arguments="/all";
p.Start();
p.WaitForExit();
string s=p.StandardOutput.ReadToEnd();
MessageBox.Show(s.Substring(s.IndexOf("Physical Address. . . . . . . . . :")+36,17));
2。使用API,利用ARP协议,只能获得同网段计算机的MAC
#region By ARP

 [DllImport("Iphlpapi.dll")]
        [DllImport("Iphlpapi.dll")] private static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length);
        private static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length);
 [DllImport("Ws2_32.dll")]
        [DllImport("Ws2_32.dll")] private static extern Int32 inet_addr(string ip);
        private static extern Int32 inet_addr(string ip);
 public static string GetMacByARP(string clientIP)
        public static string GetMacByARP(string clientIP)
 
         {
{ string ip = clientIP;
            string ip = clientIP; Int32 ldest = inet_addr(ip);
            Int32 ldest = inet_addr(ip); Int64 macinfo = new Int64();
            Int64 macinfo = new Int64(); Int32 len = 6;
            Int32 len = 6; try
            try
 
             {
{ SendARP(ldest, 0, ref macinfo, ref len);
                SendARP(ldest, 0, ref macinfo, ref len); }
            } catch
            catch
 
             {
{ return "";
                return ""; }
            } string originalMACAddress = Convert.ToString(macinfo, 16);
            string originalMACAddress = Convert.ToString(macinfo, 16); if (originalMACAddress.Length < 12)
            if (originalMACAddress.Length < 12)
 
             {
{ originalMACAddress = originalMACAddress.PadLeft(12, '0');
                originalMACAddress = originalMACAddress.PadLeft(12, '0'); }
            } string macAddress;
            string macAddress; if (originalMACAddress != "0000" && originalMACAddress.Length == 12)
            if (originalMACAddress != "0000" && originalMACAddress.Length == 12)
 
             {
{ string mac1, mac2, mac3, mac4, mac5, mac6;
                string mac1, mac2, mac3, mac4, mac5, mac6; mac1 = originalMACAddress.Substring(10, 2);
                mac1 = originalMACAddress.Substring(10, 2); mac2 = originalMACAddress.Substring(8, 2);
                mac2 = originalMACAddress.Substring(8, 2); mac3 = originalMACAddress.Substring(6, 2);
                mac3 = originalMACAddress.Substring(6, 2); mac4 = originalMACAddress.Substring(4, 2);
                mac4 = originalMACAddress.Substring(4, 2); mac5 = originalMACAddress.Substring(2, 2);
                mac5 = originalMACAddress.Substring(2, 2); mac6 = originalMACAddress.Substring(0, 2);
                mac6 = originalMACAddress.Substring(0, 2); macAddress = mac1 + "-" + mac2 + "-" + mac3 + "-" + mac4 + "-" + mac5 + "-" + mac6;
                macAddress = mac1 + "-" + mac2 + "-" + mac3 + "-" + mac4 + "-" + mac5 + "-" + mac6; }
            } else
            else
 
             {
{ macAddress = "";
                macAddress = ""; }
            } return macAddress.ToUpper();
            return macAddress.ToUpper(); }
        }
 public static IPAddress[] GetLocalIP()
        public static IPAddress[] GetLocalIP()
 
         {
{ string hostName = Dns.GetHostName();
            string hostName = Dns.GetHostName(); IPHostEntry ipEntry = Dns.GetHostByName(hostName);
            IPHostEntry ipEntry = Dns.GetHostByName(hostName); return ipEntry.AddressList;
            return ipEntry.AddressList; }
        }
 #endregion
        #endregion
    -----------------------------------------------------------------
 
                    
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号