几种C#程序读取MAC地址的方法

您所在的位置:网站首页 如何删除注册表对应项复到原始的网卡Mac地址 几种C#程序读取MAC地址的方法

几种C#程序读取MAC地址的方法

2023-12-04 15:07| 来源: 网络整理| 查看: 265

原文:几种C#程序读取MAC地址的方法

 以下是收集的几种C#程序读取MAC地址的方法,示例中是读取所有网卡的MAC地址,如果仅需要读取其中一个,稍作修改即可。

1 通过IPConfig命令读取MAC地址 ////// 根据截取ipconfig /all命令的输出流获取网卡Mac//////publicstatic List GetMacByIPConfig(){  List macs =new List();   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("Physical Address"))      {        macs.Add(line);      }    }     line = reader.ReadLine();  }

  //等待程序执行完退出进程  p.WaitForExit();  p.Close();  reader.Close();   return macs;} 2 通过WMI读取MAC地址     1)该方法依赖WMI的系统服务,该服务一般不会被关闭;但如果系统服务缺失或者出现问题,该方法无法取得MAC地址。   ////// 通过WMI读取系统信息里的网卡MAC//////publicstatic List GetMacByWMI(){  List macs =new List();  try  {    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);      }    }    moc =null;    mc =null;  }  catch  {  }

  return macs;} 3 通过NetworkInterface读取MAC地址     1)如果当前的网卡是禁用状态(硬件处于硬关闭状态),取不到该网卡的MAC地址,(您可以通过禁用网卡进行试验)。     2)如果当前启用了多个网卡,最先返回的地址是最近启用的网络连接的信息   //返回描述本地计算机上的网络接口的对象(网络接口也称为网络适配器)。publicstatic NetworkInterface[] NetCardInfo(){  return NetworkInterface.GetAllNetworkInterfaces();}

////// 通过NetworkInterface读取网卡Mac//////publicstatic List GetMacByNetworkInterface(){  List macs =new List();  NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();  foreach (NetworkInterface ni in interfaces)  {    macs.Add(ni.GetPhysicalAddress().ToString());  }  return macs;} 4 通过SendARP读取MAC地址 ////// 通过SendARP获取网卡Mac/// 网络被禁用或未接入网络(如没插网线)时此方法失灵/////////publicstaticstring 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

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3