客户端获取MAC地址

小小骨头 2012-07-06 10:11:57
1.通过IP地址,获取MAC地址。
问题1:使用ADSL,动态IP。
问题2:若有网关,也无法正确获取客户端IP。

2.通过WMI,获取MAC地址。

网上找到了如下代码:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>WMI Scripting HTML</title>

<script type="text/jscript" for="foo" event="OnCompleted(hResult,pErrorObject, pAsyncContext)" language="JScript">
document.forms[0].txtMACAddr.value=unescape(MACAddr);
document.forms[0].txtIPAddr.value=unescape(IPAddr);
document.forms[0].txtDNSName.value=unescape(sDNSName);
//document.formbar.submit();
</script>

<script type="text/jscript" for="foo" event="OnObjectReady(objObject,objAsyncContext)" language="JScript">
if(objObject.IPEnabled != null && objObject.IPEnabled != "undefined" && objObject.IPEnabled == true)
{
if(objObject.MACAddress != null && objObject.MACAddress != "undefined")
MACAddr = objObject.MACAddress;
if(objObject.IPEnabled && objObject.IPAddress(0) != null && objObject.IPAddress(0) != "undefined")
IPAddr = objObject.IPAddress(0);
if(objObject.DNSHostName != null && objObject.DNSHostName != "undefined")
sDNSName = objObject.DNSHostName;
}
</script>

</head>
<body>
<object classid="CLSID:76A64158-CB41-11D1-8B02-00600806D9B6" id="locator" viewastext>
</object>
<object classid="CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223" id="foo">
</object>

<script language="JScript">
var service = locator.ConnectServer();
var MACAddr ;
var IPAddr ;
var DomainAddr;
var sDNSName;
service.Security_.ImpersonationLevel=3;
service.InstancesOfAsync(foo, Win32_NetworkAdapterConfiguration);
</script>

<form method="POST" action="NICPost.asp" id="formfoo" name="formbar">
<input type="text" name="txtMACAddr">
<input type="text" name="txtIPAddr">
<input type="text" name="txtDNSName">
</form>
</body>
</html>

这段代码根本跑不起来啊。请各位大侠帮忙分析一下。
...全文
244 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
风一样的大叔 2012-07-07
  • 打赏
  • 举报
回复
//获取本机真实MAC地址代码如下:
using System;
using System.Runtime.InteropServices;

public partial class _Default : System.Web.UI.Page
{
[DllImport("Iphlpapi.dll")]
private static extern int SendARP(Int32 dest, Int32 host, ref Int32 mac, ref Int32 length);
[DllImport("Ws2_32.dll")]
private static extern Int32 inet_addr(string ip);

protected void Page_Load(object sender, EventArgs e)
{
string IPAddress = System.Net.Dns.GetHostByName(System.Net.Dns.GetHostName()).AddressList[0].ToString();
string mac = "";
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = "nbtstat";
p.StartInfo.Arguments = "-a " + IPAddress;
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.RedirectStandardOutput = true;
p.Start();
string output = p.StandardOutput.ReadToEnd();
int len = output.IndexOf("MAC 地址 = ");
if (len > 0)
{
mac = output.Substring(len + 8, 18);
}
this.txtmac.Text = mac;
}
}
小小骨头 2012-07-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

http://www.pconline.com.cn/pcedu/empolder/net/asp/0705/1015860.html
[/Quote]

...这个例子完全不能用啊...
WeekZero 2012-07-06
  • 打赏
  • 举报
回复
http://www.pconline.com.cn/pcedu/empolder/net/asp/0705/1015860.html
小小骨头 2012-07-06
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

service.InstancesOfAsync(foo, "Win32_NetworkAdapterConfiguration");

缺少引号
[/Quote]

确实是可以获取,但是获取的信息不一定正确,我安装过了虚拟机,他就把虚拟机的信息查出来了。
孟子E章 2012-07-06
  • 打赏
  • 举报
回复
service.InstancesOfAsync(foo, "Win32_NetworkAdapterConfiguration");

缺少引号
孟子E章 2012-07-06
  • 打赏
  • 举报
回复
你写错了正确的是
service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration');
小小骨头 2012-07-06
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

浏览器启用Activex,降低安全性

这些要求,一般的用户是不允许的
[/Quote]

我在本机做测试,启用了Activex,仍然报错。
'Win32_NetworkAdapterConfiguration' 未定义

不管最后能不能用,我就想先验证这个例子的作用。
孟子E章 2012-07-06
  • 打赏
  • 举报
回复
浏览器启用Activex,降低安全性到最低

这些要求,一般的用户是不允许的
小小骨头 2012-07-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

现在浏览器根本不给你执行的权限。
不要采用这种无用的方法得到了,客户端的MAC是不能得到的,况且,这些代码只有IE支持,非IE完全不支持
[/Quote]

请问,用ActiveX不能获取MAC地址的原因。
能不能帮我详细的描述下,为什么之前人家的例子中说能获取呢?
孟子E章 2012-07-06
  • 打赏
  • 举报
回复
现在浏览器根本不给你执行的权限。
不要采用这种无用的方法得到了,客户端的MAC是不能得到的,况且,这些代码只有IE支持,非IE完全不支持
小小骨头 2012-07-06
  • 打赏
  • 举报
回复
找到的这个例子,在vs2008中运行起来,报

'Win32_NetworkAdapterConfiguration' 未定义

这个错。

62,074

社区成员

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

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

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

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