当前位置:编程学习 > C#/ASP.NET >>

求助,关于获取客户端MAC地址的办法?

因工作的要求,要写一个程序,就是访问一个网站(服务器)然后进行登陆操作
在登陆验证的时候 去获取访问者机器的MAC地址 然后查询服务器数据库是否存在这个MAC地址,来验证这个机器是否可以登陆

在网上也搜索了很久没有找到符合条件的,求助中。。。。
--------------------编程问答-------------------- <html xmlns="http://www.w3.org/1999/xhtml" >
    <head > 
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
    <object id="locator" classid="CLSID:76A64158-CB41-11D1-8B02-00600806D9B6" viewastext> </object> 
    <object id="foo" classid="CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223"> </object> 
    <script type="text/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;  
    }  
    </script> 
    <script type="text/jscript">  
      var  service = locator.ConnectServer();  
      var  MACAddr  ;  
      service.Security_.ImpersonationLevel=3;  
      service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration');  
    </script> 

    <script type="text/jscript" event="OnCompleted(hResult,pErrorObject,pAsyncContext)" for="foo" > 
        document.form1.TextBox1.value=unescape(MACAddr); 
    </script> 

    <title>无标题页 </title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
        <div> 获得MAC:<asp:TextBox ID="TextBox1" runat="server"> </asp:TextBox> 
            <br />
        </div> 
    </form> 
</body> 

</html>
直接拷贝运行!! --------------------编程问答-------------------- http://hi.baidu.com/hubblebubblepig/blog/item/ca2ca5a161ea9b8e46106449.html

http://topic.csdn.net/t/20040415/12/2968211.html

第二个链接解决了 --------------------编程问答-------------------- 我也在网上找了很多方法,不过都不能解决问题
方法1:
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
这个只是取得服务器的MAC地址
方法2:
    [DllImport("Iphlpapi.dll")]
    public static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length);
    [DllImport("Ws2_32.dll")]
    public static extern Int32 inet_addr(string ip);
只能作用在局域网内,或者说是如果是通过外网访问的话就失效
方法3:
就是使用IE中的一个特有控件,而且必须使用JScript编写
最大的问题就是,如果客户不是使用IE就取不到,再就是设置控件对安全性比较大 --------------------编程问答-------------------- up --------------------编程问答-------------------- 还有个问题,2楼的朋友就是我上面说的第3个方法
如果适用IE7运行的话,只能在IE设置里去吧ActiveX控件都去启用 --------------------编程问答-------------------- 楼主,方法就是你说的那些方法,

也就是说:除了ActiveX控件(系统自带的,或自己开发的,都一样)
没其它的办法。

所以你不要再考虑了。 --------------------编程问答-------------------- 哎,难道真的无解了!? --------------------编程问答-------------------- 我开心地Mark --------------------编程问答-------------------- 这个问题我这边都是要求客户使用一个小的cs登陆器;
通过登陆器获取客户端的mac,再调用webservice传递mac地址的 --------------------编程问答--------------------
引用 1 楼 koukoujiayi 的回复:
<html xmlns="http://www.w3.org/1999/xhtml" >
    <head >
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <object id="locator" classid="CLSID:76A64158-CB41-11D1-8B02-00600806D9B6" viewastext> </object>
    <object id="foo" classid="CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223"> </object>
    <script type="text/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; 
    } 
    </script>
    <script type="text/jscript"> 
      var  service = locator.ConnectServer(); 
      var  MACAddr  ; 
      service.Security_.ImpersonationLevel=3; 
      service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration'); 
    </script>

    <script type="text/jscript" event="OnCompleted(hResult,pErrorObject,pAsyncContext)" for="foo" >
        document.form1.TextBox1.value=unescape(MACAddr);
    </script>

    <title>无标题页 </title>
</head>
<body>
    <form id="form1" runat="server">
        <div> 获得MAC: <asp:TextBox ID="TextBox1" runat="server"> </asp:TextBox>
            <br />
        </div>
    </form>
</body>

</html>
直接拷贝运行!!


ok --------------------编程问答-------------------- 看来就只有楼上那个办法最好了 --------------------编程问答-------------------- ActiveX之类的插件
http://topic.csdn.net/u/20090617/11/8f0432b6-84ee-49da-a55f-86b3d343ab8b.html --------------------编程问答-------------------- mark,不过,在IE安全级别稍高点就应该不成功吧.
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,