[英]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.