在C#中如何查找内部设备的mac地址而不是Router mac地址

Ali*_*ran 6 c#

由于某些安全原因,我想在网络上获取我的软件用户的mac地址.但我可以通过以下方法获取路由器的mac地址.

public string GetMACAddress()
    {
        NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
        String sMacAddress = string.Empty;
        foreach (NetworkInterface adapter in nics)
        {
            if (sMacAddress == String.Empty)// only return MAC Address from first card  
            {
                IPInterfaceProperties properties = adapter.GetIPProperties();
                sMacAddress = adapter.GetPhysicalAddress().ToString();
            }
        } return sMacAddress;
    }
Run Code Online (Sandbox Code Playgroud)

我需要在互联网上访问我的软件的系统的特定mac地址和该路由器的内部设备.那可能通过C#?

Ali*_*ran 1

此方法是获取用户的 Mac 地址的最佳方法。

\n\n
[DllImport("Iphlpapi.dll")]\n        private static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length);\n        [DllImport("Ws2_32.dll")]\n        private static extern Int32 inet_addr(string ip);\n        private static string GetClientMAC(string strClientIP)\n        {\n            string mac_dest = "";\n            try\n            {\n                Int32 ldest = inet_addr(strClientIP);\n                Int32 lhost = inet_addr("");\n                Int64 macinfo = new Int64();\n                Int32 len = 6;\n                int res = SendARP(ldest, 0, ref macinfo, ref len);\n                string mac_src = macinfo.ToString("X");\n\n                while (mac_src.Length < 12)\n                {\n                    mac_src = mac_src.Insert(0, "0");\n                }\n\n                for (int i = 0; i < 11; i++)\n                {\n                    if (0 == (i % 2))\n                    {\n                        if (i == 10)\n                        {\n                            mac_dest = mac_dest.Insert(0, mac_src.Substring(i, 2));\n                        }\n                        else\n                        {\n                            mac_dest = "-" + mac_dest.Insert(0, mac_src.Substring(i, 2));\n                        }\n                    }\n                }\n            }\n            catch (Exception err)\n            {\n                throw new Exception("L\xe1\xbb\x97i " + err.Message);\n            }\n            return mac_dest;\n        }\n
Run Code Online (Sandbox Code Playgroud)\n