wordpress建站数据库,四川省的建设厅注册中心网站首页,西安网页设计,齐鲁人才网泰安最新招聘网原文:几种C#程序读取MAC地址的方法以下是收集的几种C#程序读取MAC地址的方法#xff0c;示例中是读取所有网卡的MAC地址#xff0c;如果仅需要读取其中一个#xff0c;稍作修改即可。 1 通过IPConfig命令读取MAC地址 ///summary///根据截取ipconfig /all命令的输出流…原文:几种C#程序读取MAC地址的方法 以下是收集的几种C#程序读取MAC地址的方法示例中是读取所有网卡的MAC地址如果仅需要读取其中一个稍作修改即可。 1 通过IPConfig命令读取MAC地址 ///summary/// 根据截取ipconfig /all命令的输出流获取网卡Mac////summary///returns/returnspublicstatic Liststring GetMacByIPConfig(){ Liststring macs new Liststring(); 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地址。 ///summary/// 通过WMI读取系统信息里的网卡MAC////summary///returns/returnspublicstatic Liststring GetMacByWMI(){ Liststring macs new Liststring(); 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();}///summary/// 通过NetworkInterface读取网卡Mac////summary///returns/returnspublicstatic Liststring GetMacByNetworkInterface(){ Liststring macs new Liststring(); NetworkInterface[] interfaces NetworkInterface.GetAllNetworkInterfaces(); foreach (NetworkInterface ni in interfaces) { macs.Add(ni.GetPhysicalAddress().ToString()); } return macs;} 4 通过SendARP读取MAC地址 ///summary/// 通过SendARP获取网卡Mac/// 网络被禁用或未接入网络如没插网线时此方法失灵////summary///param nameremoteIP/param///returns/returnspublicstaticstring 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)]privatestaticexternint SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length);[DllImport(Ws2_32.dll)]privatestaticextern Int32 inet_addr(string ip); 5 从注册表读取MAC地址 常规用户可通过读取注册表项Windows Genuine Advantage获取到物理网卡地址。 1如果注册表项被修改则无法取得该MAC地址 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Genuine Advantage