153 votes

Méthode fiable pour obtenir l'adresse MAC d'une machine en C#

Je dois trouver un moyen d'obtenir l'adresse MAC d'une machine, quel que soit le système d'exploitation qu'elle utilise, en utilisant C#.

L'application devra fonctionner sur XP/Vista/Win7 32bit et 64bit, ainsi que sur ces OS mais avec une langue étrangère par défaut. En outre, de nombreuses commandes C# et requêtes OS ne fonctionnent pas sur tous les OS.

Avez-vous des idées ?

J'ai récupéré la sortie de ipconfig /all mais cela n'est pas du tout fiable car le format de sortie diffère d'une machine à l'autre.

0voto

ChrisW Points 37322

ipconfig.exe est mis en œuvre à l'aide de diverses DLL, dont iphlpapi.dll ... En cherchant sur Google iphlpapi révèle une API Win32 correspondante documentée dans MSDN.

0voto

Richard Points 1

Essayez ça :

    /// <summary>
    /// returns the first MAC address from where is executed 
    /// </summary>
    /// <param name="flagUpOnly">if sets returns only the nic on Up status</param>
    /// <returns></returns>
    public static string[] getOperationalMacAddresses(Boolean flagUpOnly)
    {
        string[] macAddresses = new string[NetworkInterface.GetAllNetworkInterfaces().Count()];

        int i = 0;
        foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
        {
            if (nic.OperationalStatus == OperationalStatus.Up || !flagUpOnly)
            {
                macAddresses[i] += ByteToHex(nic.GetPhysicalAddress().GetAddressBytes());
                //break;
                i++;
            }
        }
        return macAddresses;
    }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X