获取机器&x27;s mac地址c#

获取机器&x27;s mac地址c#,c#,asp.net,asp.net-mvc,asp.net-mvc-3,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 3,我正在开发一个ASP.NET MVC应用程序,我想获取用户的MAC地址。经过一些研究,我发现以下代码: string GetMacAddress() { string macAddresses = ""; foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces()) { if (nic.NetworkInterfaceType != NetworkInterface

我正在开发一个ASP.NET MVC应用程序,我想获取用户的MAC地址。经过一些研究,我发现以下代码:

string GetMacAddress()
{
    string macAddresses = "";
    foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
    {
        if (nic.NetworkInterfaceType != NetworkInterfaceType.Ethernet)
            continue;
        if (nic.OperationalStatus == OperationalStatus.Up)
        {
            macAddresses += nic.GetPhysicalAddress().ToString();
            break;
        }
    }

    return macAddresses;
}
没有错误,但我总是得到一个空地址。有人知道如何解决这个问题吗

我正在开发一个mvc.net应用程序,我想获取用户的mac地址

你可以忘了它,那是不可能的。您只能获取浏览您网站的客户端的IP地址

事实上,有一种方法可以得到它。在视图中添加以下内容:

@using (Html.BeginForm())
{
    @Html.Label("Mac", "Please enter your MAC address")
    @Html.TextBox("Mac")
    <button type="submit">OK</button>
}

另一种可能性是开发ActiveX控件(仅在IE下工作),用户可以在浏览器中安装该控件,该控件可以检索NIC的MAC地址并将其发送到服务器。

我认为这可能是您的问题

 if (nic.NetworkInterfaceType != NetworkInterfaceType.Ethernet) continue;
与大多数当前连接相同

 NetworkInterfaceType.GigabitEthernet
只需将其包含在选择中即可


请参见

您发布的代码将获取承载站点的计算机的MAC地址,而不是用户的MAC地址。除非你在他们的机器上运行一些软件,并向你报告,否则几乎不可能获得远程MAC地址

如果做不到这一点,你可以考虑获取他们的公共IP地址并将其解析到MAC。我在过去做过这件事(怎么…我不记得了,那是在很久以前我的“黑客攻击”中!)。正如我所说,这将获得公共IP地址(路由器、防火墙等)的MAC解析

互联网上的某个地方有一个IANA分配的MAC地址列表,其中列出了哪些MAC已分配给哪个公司,这可能对您也很有用


从道德上讲,我认为获取用户的MAC地址不是一个好主意,因为它是指向他们机器的唯一唯一东西,而且只指向他们的机器

此代码不提供用户地址,而是提供您自己的(服务器)地址。你试过调试你的代码来检查
NetworkInterface.GetAllNetworkInterfaces()
的结果吗?检查这个可能对你有帮助的答案:他问的是客户端的MAC地址,而不是服务器的MAC地址。但我想我还是回答了他的问题,为什么他得到的是空地址。即使它最终会与他想要的地址不同。只是一个补充:如果你想从客户端计算机获取MAC地址,你需要使用ActiveX/Java或类似的东西。是的……你可以获取IP地址,甚至有时只解析到他们的路由器、防火墙等。有时甚至是ISP。因此,您不太可能将IP地址解析为客户端计算机的MAC地址。@FilipEkberg,事实上是这样。你会推荐那种方法吗?@Mike,不会的。因为没有理由得到MAC@FilipEkberg,我很高兴这是你的答案
 NetworkInterfaceType.GigabitEthernet