在C#中不使用IP获取本地LAN网络的物理地址(MAC)

时间:2015-03-23 10:08:07

标签: c#

我正在构建一个程序,显示与我连接的本地主机名。实际上,我还想在列表视图中检查它们的MAC(物理地址)。看这个图片: enter image description here

现在,您可以看到我的程序显示可用网络但未显示物理地址。我想要帮助,当我点击“显示”按钮时,程序自动为MAC提供可用的网络名称。 我在互联网上搜索了这么多,但我无法理解如何在不使用IP的情况下显示Mac地址。 现在,这个网站有很多代码,但我找不到合适的代码。 对不起我的英语,它不太好。

1 个答案:

答案 0 :(得分:0)

如果没有IP地址,除非在这些个人计算机上安装了软件,否则无法找到其他计算机的MAC。

如果想要系统的MAC:

   public string GetMacAddress(string ipAddress)
{
    string macAddress = string.Empty;
    System.Diagnostics.Process pProcess = new System.Diagnostics.Process();
    pProcess.StartInfo.FileName = "arp";
    pProcess.StartInfo.Arguments = "-a " + ipAddress;
    pProcess.StartInfo.UseShellExecute = false;
    pProcess.StartInfo.RedirectStandardOutput = true;
      pProcess.StartInfo.CreateNoWindow = true;
    pProcess.Start();
    string strOutput = pProcess.StandardOutput.ReadToEnd();
    string[] substrings = strOutput.Split('-');
    if (substrings.Length >= 8)
    {
       macAddress = substrings[3].Substring(Math.Max(0, substrings[3].Length - 2)) 
                + "-" + substrings[4] + "-" + substrings[5] + "-" + substrings[6] 
                + "-" + substrings[7] + "-" 
                + substrings[8].Substring(0, 2);
        return macAddress;
    }

    else
    {
        return "not found";
    }
}