• C#程序读取MAC地址的五种方法(转)


       public class GetMac
        {
            ///<summary>
            /// 根据截取ipconfig /all命令的输出流获取网卡Mac
            ///</summary>
            ///<returns></returns>
            public static List<string> GetMacByIpConfig()
            {
                List<string> macs =new List<string>();
                ProcessStartInfo startInfo = new ProcessStartInfo("ipconfig", "/all");
                startInfo.UseShellExecute = false;
                startInfo.RedirectStandardInput = true;
                startInfo.RedirectStandardOutput = true;
                startInfo.RedirectStandardError = true;
                startInfo.CreateNoWindow = true;
                Process p = Process.Start(startInfo);
                //截取输出流
                StreamReader reader = p.StandardOutput;
                string line = reader.ReadLine();
                while (!reader.EndOfStream)
                {
                    if (!string.IsNullOrEmpty(line))
                    {
                        line = line.Trim();
                        if (line.StartsWith("物理地址"))
                        {
                            macs.Add(line.Substring(32));
                        }
                    }
                    line = reader.ReadLine();
                }
                //等待程序执行完退出进程
                p.WaitForExit();
                p.Close();
                reader.Close();
                return macs;
            }
    
            ///<summary>
            /// 通过WMI读取系统信息里的网卡MAC
            ///</summary>
            ///<returns></returns>
            public static List<string> GetMacByWmi()
            {
                List<string> macs =new List<string>();
                string mac ="";
                ManagementClass mc =new ManagementClass("Win32_NetworkAdapterConfiguration");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    if ((bool)mo["IPEnabled"])
                    {
                        mac = mo["MacAddress"].ToString();
                        macs.Add(mac);
                    }
                }
                return macs;
            }
    
            ///<summary>
            /// 通过NetworkInterface读取网卡Mac
            ///</summary>
            ///<returns></returns>
            public static List<string> GetMacByNetworkInterface()
            {
                List<string> macs =new List<string>();
                NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
                foreach (NetworkInterface ni in interfaces)
                {
                    macs.Add(ni.GetPhysicalAddress().ToString());
                }
                return macs;
            }
    
            ///<summary>
            /// 通过SendARP获取网卡Mac
            /// 网络被禁用或未接入网络(如没插网线)时此方法失灵
            ///</summary>
            ///<param name="remoteIP"></param>
            ///<returns></returns>
            public static string GetMacBySendArp(string remoteIP)
            {
                StringBuilder macAddress =new StringBuilder();
                try
                {
                    Int32 remote = inet_addr(remoteIP);
                    Int64 macInfo =new Int64();
                    Int32 length =6;
                    SendARP(remote, 0, ref macInfo, ref length);
                    string temp = Convert.ToString(macInfo, 16).PadLeft(12, '0').ToUpper();
                    int x =12;
                    for (int i =0; i <6; i++)
                    {
                        if (i ==5)
                        {
                            macAddress.Append(temp.Substring(x -2, 2));
                        }
                        else
                        {
                            macAddress.Append(temp.Substring(x -2, 2) +"-");
                        }
                        x -=2;
                    }
                    return macAddress.ToString();
                }
                catch
                {
                    return macAddress.ToString();
                }
            }
    
            [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);
        }

    本文来自博客http://www.cnblogs.com/diulela/archive/2012/04/07/2436111.html

  • 相关阅读:
    git提交代码到github步骤
    HTML前端标签
    16-类视图
    15-auth系统与类视图
    14-中间件和上下文处理器
    13-会话技术及表单(cookies和session)
    07-Python Django view 两种return 方法
    10-请求与响应和HTML中的from表单
    09-表关联对象及多表查询
    08-常用查询及表关系的实现
  • 原文地址:https://www.cnblogs.com/xuhang/p/4272924.html
Copyright © 2020-2023  润新知