我用Asp.net2.0做了一个网上签到簿,其中需要获取客户端机器的MAC地址作校验,大多数都使用正常,但却发现有两台机器不能获取MAC地址,测试时发现IP地址能正常获取,用SendARP时不能获取MAC,请高手给予指导。
解决方案 »
- <a href="default.aspx">a</a>
- vs2003项目,编译没问题,单个aspx页面浏览报错。(内容见内)
- JavaScript如何获取panel的height值
- 关于软件中用的摄像机问题?
- |zyciis| 一个DataTable如何绑定到两个Repeater里面 如1-10 绑定到rpt1 11-20 绑定到rpt2
- 关于报表的初级问题,如何找到CrystalReport1?
- 一个sql查询如何返回多个结果?
- 滚动datagrid时怎么使对应的信息也跟着滚动
- 如何在HTML中调用.CS的方法
- asp.net中如何从服务器反回一个XML文件
- 如何在.NET2.0中为控件的事件布线
- 在A.aspx中怎么访问B.cs中的变量?
<head>
<title>WMI Scripting HTML</title>
<script 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 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>
假设我的机器MAC是00-15-58-EE-A8-D0,那么由SendARP获取的MAC地址是Int64的数值,转换为字符串后应该是0DA8EE585100,但作为数值转换为字符串后,其前边的0被舍去了,所以就不是12位的字符串,而变成了11位,所以再转换为00-15-58-EE-A8-D0的形式时就会出错。