簡體   English   中英

獲取機器的Mac地址C#

[英]Get machine's mac address c#

我正在使用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>
}

並在相應的控制器動作內:

[HttpPost]
public ActionResult SomeAction(string mac)
{
    // if the user was kind enough to provide you his MAC address
    // you could read it from the mac argument
    // Of course he could have entered any MAC address he likes and
    // you have no way of verifying that
    ...
}

還有另一種可能性是開發ActiveX控件(僅在IE下可以使用),並且用戶可以將其安裝在瀏覽器中,該瀏覽器可以檢索其NIC的MAC地址並將其發送到服務器。

您發布的代碼將獲取托管站點的計算機的MAC地址,而不是用戶的MAC地址。 除非您在他們的計算機上運行了某些軟件並將其報告給您,否則幾乎不可能獲得遠程MAC地址。

如果失敗,則可以考慮獲取其公共IP地址並將其解析為MAC。 我過去曾經這樣做過(怎么……我不記得了,那是我很久以前的“黑客”時代!)。 正如我所說,這將獲得公共IP地址(路由器,防火牆等)的MAC分辨率。

互聯網上某處有IANA分配的MAC地址列表,其中列出了已分配的MAC和分配給的公司,這也可能對您有用。

從道德上講,我認為獲取用戶的MAC地址不是一個好主意,因為它是指向他們的計算機(唯一的)的唯一信息!

我認為這可能是您的問題;

 if (nic.NetworkInterfaceType != NetworkInterfaceType.Ethernet) continue;

因為大多數當前連接將

 NetworkInterfaceType.GigabitEthernet

只需將其包含在選擇中

請參閱http://msdn.microsoft.com/zh-cn/library/system.net.networkinformation.networkinterfacetype.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM