注册 登录
编程论坛 ASP.NET技术论坛

求助关于获取客户端mac地址!

C心情 发布于 2010-04-23 11:25, 906 次点击
Request.UserHostAddress.ToString().Trim();
可以获取客户端IP地址,但是这个地址是会改变的!
怎么才能实现获取客户端的MAC地址,
要做到不管客户端是通过路由还是通过拨号上网都能取得!
谢谢!
4 回复
#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系统有效.
#3
misswang2010-04-24 21:59
先获取IP地址,再根据IP获取到物理地址MAC
这个你可以参考一下
只有本站会员才能查看附件,请 登录
#4
faxisi19872010-12-21 15:27
请问版主,我怎么总是获取不到对象啊!?可能是什么原因呢?
#5
faxisi19872010-12-21 15:54
现在我获取到了,可是与ipconfig /all查出来的不一样啊
1