<SCRIPT language=JScript event="OnCompleted(hResult,pErrorObject, pAsyncContext)" for=foo> 
document.write (unescape(MACAddr)); 
</SCRIPT> 
<SCRIPT language=JScript event=OnObjectReady(objObject,objAsyncContext) for=foo> 
if(objObject.IPEnabled != null && objObject.IPEnabled != "undefined" && objObject.IPEnabled == true && objObject.MACAddress != null && objObject.MACAddress != "undefined")MACAddr = objObject.MACAddress; 
</SCRIPT> 
<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>

解决方案 »

  1.   

    BlueDestiny(这回真的准备要改名字了...):
    你的意思好像是在用户端用javascript获得本地MAC地址什么?
    弱弱的问下:
    <OBJECT id=locator classid=CLSID:76A64158-CB41-11D1-8B02-00600806D9B6
    这个是javascript就带有的一个控件么?那OnCompleted这几个方法是这个Object的么?不过另外就是就算是从客户端获得了mac地址,你的意思是说把这个地址发给服务端后台么?不过一般原则上对于服务器客户端来说来自于客户端的信息都不能视为太可信,因为客户端是有办法伪造的。
      

  2.   

    你可以加密后传输啊,或者想网上银行一样写个activeX确保安全
      

  3.   

    Taciterry(面朝大海,春暖花开) :
    “你可以加密后传输啊”——用什么加密?当然activex这个方式应该是可行的,只是麻烦了点。不过如果不用activex的话,而用javascript等在客户端加密,那算法就不得不完全公开,就没有意义了。
      

  4.   

    上面给出的代码应该是WMI里面的示例代码,是MS自带的一个控件,但是本地执行的话,有安全限制,如果你想安全的通过客户端,就用activeX吧。
      

  5.   

    客户端语言会有限制,服务器得到客户端的信息有限,activeX是较好的选择了.
      

  6.   

    OnCompleted要客户端权限放到最低,
    如果你只是想鉴别不同的用户,
    或许可试试其方做法,比方说:
    客户端的IP+COOKIE//加COOKIE是可能多个用户共用一个网关
      

  7.   

    houstond(东方浩气) 的写法也不行,一个有权限设置,一个有多网卡的用户,它只会读取一个mac地址,有时候这并不是你需要的mac地址.