Как получить MAC-идентификатор системы
Я нашел этот код для получения MAC-адреса, но он возвращает длинную строку и не содержит ":".
Можно ли добавить в ':' или разделить строку и добавить ее самостоятельно?
вот код:
private object GetMACAddress()
{
string macAddresses = "";
foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
{
if (nic.OperationalStatus == OperationalStatus.Up)
{
macAddresses += nic.GetPhysicalAddress().ToString();
break;
}
}
return macAddresses;
}
Он возвращает значение 00E0EE00EE00, тогда как я хочу, чтобы оно отображало что-то вроде 00:E0:EE:00:EE:00.
Есть идеи?
Благодарю.
2 ответа
Решение
Я использую следующий код для доступа к MAC-адресу в формате, который вы хотите:
public string GetSystemMACID()
{
string systemName = System.Windows.Forms.SystemInformation.ComputerName;
try
{
ManagementScope theScope = new ManagementScope("\\\\" + Environment.MachineName + "\\root\\cimv2");
ObjectQuery theQuery = new ObjectQuery("SELECT * FROM Win32_NetworkAdapter");
ManagementObjectSearcher theSearcher = new ManagementObjectSearcher(theScope, theQuery);
ManagementObjectCollection theCollectionOfResults = theSearcher.Get();
foreach (ManagementObject theCurrentObject in theCollectionOfResults)
{
if (theCurrentObject["MACAddress"] != null)
{
string macAdd = theCurrentObject["MACAddress"].ToString();
return macAdd.Replace(':', '-');
}
}
}
catch (ManagementException e)
{
}
catch (System.UnauthorizedAccessException e)
{
}
return string.Empty;
}
Или вы можете использовать Join
метод, как это:
return string.Join (":", (from z in nic.GetPhysicalAddress().GetAddressBytes() select z.ToString ("X2")).ToArray());
using System;
using System.Text;
class Program
{
static void Main()
{
Console.WriteLine(MACify("00E0EE00EE00"));
}
static string MACify(string input)
{
var builder = new StringBuilder(input);
for(int i=builder.Length-2; i>0; i-=2)
{
builder.Insert(i,':');
}
return builder.ToString();
}
}
Выходы:
00: E0: EE: 00: EE: 00