网络上很多写法都是调用微软ActiveX,安全级别一高就无法使用,有没有谁有其他的方法获取MAC地址?

解决方案 »

  1.   

      
     <HTML><HEAD><TITLE>WMI Scripting HTML</TITLE>  
        <META http-equiv=Content-Type content="text/html; charset=gb2312">  
        <SCRIPT language=JScript event="OnCompleted(hResult,pErrorObject, pAsyncContext)" for=foo>  
        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 language=JScript event=OnObjectReady(objObject,objAsyncContext) for=foo>  
          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>  
         
       <META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>  
       <BODY>  
       <OBJECT id=locator classid=CLSID:76A64158-CB41-11D1-8B02-00600806D9B6 VIEWASTEXT></OBJECT>  
       <OBJECT id=foo classid=CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223></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 id=formfoo name=formbar action=NICPost.asp method=post><INPUT value=00:05:5D:0E:C7:FA name=txtMACAddr> <INPUT value=58.245.184.191 name=txtIPAddr> <INPUT value=typ name=txtDNSName> </FORM></BODY></HTML>  保存HTML 运行看效果。
      

  2.   


    这个就是引用了ActiveX,感觉很不方便
      

  3.   

    那就不要通过JS获取,c#一样有方法可以获取mac.
    //获取远程主机的MAC地址时,需要借用API函数SendARP.该函数使用ARP协议,向目的主机发送ARP包,利用返回并存储在高速缓存中的IP和MAC地址对,从而获取远程主机的MAC地址.
    //获取远程主机MAC
    public string getRemoteMac(string localIP, string remoteIP) 

       Int32 ldest= inet_addr(remoteIP); //目的ip 
       Int32 lhost= inet_addr(localIP); //本地ip    try 
       { 
        Int64 macinfo = new Int64(); 
        Int32 len = 6; 
        int res = SendARP(ldest,0, ref macinfo, ref len); 
        return Convert.ToString(macinfo,16); 
       } 
       catch(Exception err) 
       { 
        Console.WriteLine("Error:{0}",err.Message); 
       } 
       return 0.ToString();

      

  4.   

    各位有没有用过通过MAC验证来登录的,
      

  5.   

    还是不要获取了,js需要浏览器支持,浏览器级别稍微高一些,获取不到,除非写一个类似木马的东西放在网站里面获取MAC地址,否则是获取不到滴,本人当时研究过,后来只能由IP和cookie来验证