![]() |
#2
czyzhuo2010-04-23 14:47
可以用JS或vbscript来调用WMI接口来获取Client端的MAC地址.
<html> <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> 关于WMI的详细信息可以参看MSDN: http://msdn. 平心而论,WMI的很强大的。原先需要动用重量级编程工具才能做到的事,现在用js/vbscript就可以做了。 获取多块网卡的MAC地址: if(objObject.MACAddress != null && objObject.MACAddress != "undefined"){ MACAddr = objObject.MACAddress; alert( MACAddr ); } 缺点:需要ActiveX支持.对MS-WIN系统有效. |
Request.UserHostAddress.ToString().Trim();
可以获取客户端IP地址,但是这个地址是会改变的!
怎么才能实现获取客户端的MAC地址,
要做到不管客户端是通过路由还是通过拨号上网都能取得!
谢谢!