/********************************************************************** * C# 获取MAC地址 * 说明: * 在C#中获取本机的MAC地址,文中提供两个参考,一个是能够所有的MAC * 地址,,一个是获取第一个MAC地址。 * * 2016-12-9 深圳 南山平山村 曾剑锋 *********************************************************************/ 一、参考文档: 1. Reliable method to get machine‘s MAC address in C# http://*.com/questions/850650/reliable-method-to-get-machines-mac-address-in-c-sharp 二、解决方法: using System; using System.Collections.Generic; using System.Text; using System.Net.NetworkInformation; namespace LocalDetectTest { class NetTools { /// <summary> /// Finds the MAC address of the NIC with maximum speed. /// </summary> /// <returns>The MAC address.</returns> public static void PrintAllMacAddress() { const int MIN_MAC_ADDR_LENGTH = 12; string macAddress = string.Empty; long maxSpeed = -1; foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces()) { Console.WriteLine( "Name: " + nic.Name + " Found MAC Address: " + nic.GetPhysicalAddress() + " Type: " + nic.NetworkInterfaceType); string tempMac = nic.GetPhysicalAddress().ToString(); if (nic.Speed > maxSpeed && !string.IsNullOrEmpty(tempMac) && tempMac.Length >= MIN_MAC_ADDR_LENGTH) { Console.WriteLine("New Max Speed = " + nic.Speed + ", MAC: " + tempMac); maxSpeed = nic.Speed; macAddress = tempMac; } } // return macAddress; } /// <summary> /// Finds the MAC address of the first operation NIC found. /// </summary> /// <returns>The MAC address.</returns> public static string GetFirstMacAddress() { string macAddresses = string.Empty; foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces()) { if (nic.OperationalStatus == OperationalStatus.Up) { macAddresses += nic.GetPhysicalAddress().ToString(); Console.WriteLine(macAddresses); break; } } return macAddresses; } } }