欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#实现获取MAC地址的方法

程序员文章站 2024-02-17 10:06:40
本文实例讲述了c#实现获取mac地址的方法,是一个非常常见而且实用的功能,具体方法如下: 主要功能代码如下: /// ///...

本文实例讲述了c#实现获取mac地址的方法,是一个非常常见而且实用的功能,具体方法如下:

主要功能代码如下:

/// <summary>
/// 根据网卡类型来获取mac地址
/// </summary>
/// <param name="networktype">网卡类型</param>
/// <param name="macaddressformathanlder">格式化获取到的mac地址</param>
/// <returns>获取到的mac地址</returns>
public static string getmacaddress(networkinterfacetype networktype, func<string, string> macaddressformathanlder)
{
  string _mac = string.empty;
  networkinterface[] _networkinterfaces = networkinterface.getallnetworkinterfaces();
  foreach (networkinterface adapter in _networkinterfaces)
  {
 if (adapter.networkinterfacetype == networktype)
 {
   _mac = adapter.getphysicaladdress().tostring();
   if (!string.isnullorempty(_mac))
 break;
 }
  }
  if (macaddressformathanlder != null)
 _mac = macaddressformathanlder(_mac);
  return _mac;
}
/// <summary>
/// 根据网卡类型以及网卡状态获取mac地址
/// </summary>
/// <param name="networktype">网卡类型</param>
/// <param name="status">网卡状态</param>
///up 网络接口已运行,可以传输数据包。 
///down 网络接口无法传输数据包。 
///testing 网络接口正在运行测试。 
///unknown 网络接口的状态未知。 
///dormant 网络接口不处于传输数据包的状态;它正等待外部事件。 
///notpresent 由于缺少组件(通常为硬件组件),网络接口无法传输数据包。 
///lowerlayerdown 网络接口无法传输数据包,因为它运行在一个或多个其他接口之上,而这些“低层”接口中至少有一个已关闭。 
/// <param name="macaddressformathanlder">格式化获取到的mac地址</param>
/// <returns>获取到的mac地址</returns>
public static string getmacaddress(networkinterfacetype networktype, operationalstatus status, func<string, string> macaddressformathanlder)
{
  string _mac = string.empty;
  networkinterface[] _networkinterfaces = networkinterface.getallnetworkinterfaces();
  foreach (networkinterface adapter in _networkinterfaces)
  {
 if (adapter.networkinterfacetype == networktype)
 {
   if (adapter.operationalstatus != status) continue;
   _mac = adapter.getphysicaladdress().tostring();
   if (!string.isnullorempty(_mac)) break;
 }
  }
  if (macaddressformathanlder != null)
 _mac = macaddressformathanlder(_mac);
  return _mac;
}
/// <summary>
/// 获取读到的第一个mac地址
/// </summary>
/// <returns>获取到的mac地址</returns>
public static string getmacaddress(func<string, string> macaddressformathanlder)
{
  string _mac = string.empty;
  networkinterface[] _networkinterfaces = networkinterface.getallnetworkinterfaces();
  foreach (networkinterface adapter in _networkinterfaces)
  {
 _mac = adapter.getphysicaladdress().tostring();
 if (!string.isnullorempty(_mac))
   break;
  }
  if (macaddressformathanlder != null)
 _mac = macaddressformathanlder(_mac);
  return _mac;
}

有些项目中出于安全考虑需要获取mac地址,然后再判断mac地址是否合法才可以登陆。本文总结的方法希望对大家有所帮助!