Как получить 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

Другие вопросы по тегам