C# .net擷取電腦IP和MAC
/// <summary>
/// 取得使用者用戶端IP(穿過Proxy 伺服器取遠端使用者真實IP地址)
/// </summary>
public static string GetClientIP()
{
//如果使用代理,擷取真實IP
string userip = string.Empty;
if (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != "")
{
userip = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
else
{
userip = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
}
if (userip == null || userip == "")
{
userip = HttpContext.Current.Request.UserHostAddress;
}
return userip;
//HttpRequest Request = HttpContext.Current.Request;
//try
//{
// if (HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null)
// {
// return HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
// }
// else
// {
// return HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString();
// }
//}
//catch { return "127.0.0.1"; }
}
//擷取mac地址
public static string GetCustomerMac()
{
string IP = GetClientIP();
string dirResults = "";
ProcessStartInfo psi = new ProcessStartInfo();
Process proc = new Process();
psi.FileName = "nbtstat";
psi.RedirectStandardInput = false;
psi.RedirectStandardOutput = true;
psi.Arguments = "-a " + IP;
psi.UseShellExecute = false;
proc = Process.Start(psi);
dirResults = proc.StandardOutput.ReadToEnd();
proc.WaitForExit();
//匹配mac地址
Match m = Regex.Match(dirResults, "\\w+\\-\\w+\\-\\w+\\-\\w+\\-\\w+\\-\\w\\w");
//若匹配成功則返回mac,否則返回找不到主機資訊
if (m.ToString() != "")
{
return m.ToString();
}
else
{
return "找不到主機資訊";
}
}