由于某些安全原因,我想在网络上获取我的软件用户的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#?
此方法是获取用户的 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 }\nRun Code Online (Sandbox Code Playgroud)\n