根据IP获取局域网客户机跨网段MAC地址,为什么返回的是空值,请教有方法获取吗?

cherish588 2013-07-17 05:29:49
现在用的方法如下(网上都说这个可以获取跨网段MAC,但是得到的是空值)
private string GetMac(string IP)
{
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();
dirResults = dirResults.Replace("\r", "").Replace("\n", "").Replace("\t", "");
Regex reg = new Regex("Mac[ ]{0,}Address[ ]{0,}=[ ]{0,}(?<key>((.)*?))__MAC", RegexOptions.IgnoreCase | RegexOptions.Compiled);
Match mc = reg.Match(dirResults + "__MAC");

if (mc.Success)
{ return mc.Groups["key"].Value; }
else
{
reg = new Regex("Host not found", RegexOptions.IgnoreCase | RegexOptions.Compiled);
mc = reg.Match(dirResults);
if (mc.Success)
{
return "Host not found!";
}
else
{ return ""; }
}


为什么这个方法得到的是空值,各位大侠有什么方法吗?
...全文
118 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cherish588 2013-07-18
  • 打赏
  • 举报
回复
引用 1 楼 rayaspnet 的回复:
权限问题, asp.net host 正常设置是不会给你管理员权限
我是布置在win2008服务器上的,请问怎样设置权限啊?
cherish58 2013-07-18
  • 打赏
  • 举报
回复
引用 4 楼 cherish588 的回复:
给你以下的方法,可以跨网段获取MAC地址,客户端需关闭Windows防火墙,开心吧 private string GetMac(string IP) { 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 "找不到主机信息"; } }
这个方法正确,就是有一个问题,若客户端通过路由器再分出去就无法获得。
cherish588 2013-07-18
  • 打赏
  • 举报
回复
研究了很久,是匹配规则的问题,现在终于可以了,看我上面的方法
cherish588 2013-07-18
  • 打赏
  • 举报
回复
给你以下的方法,可以跨网段获取MAC地址,客户端需关闭Windows防火墙,开心吧 private string GetMac(string IP) { 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 "找不到主机信息"; } }
rayaspnet 2013-07-17
  • 打赏
  • 举报
回复
权限问题, asp.net host 正常设置是不会给你管理员权限

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧