足迹—— 获取客户端MAC地址

  为了CRM系统的安全性,今天领导要求员工登录时候都要验证他们电脑的信息,匹配之后才允许登录。我左思右想还是验证网卡的MAC吧。首先在Commond层加个获取网卡信息的类GetNetCardMAC
using System;
using System.Collections.Generic;
using System.Text;
using System.Management;

namespace JL.CRM.Common
{
    
public  class GetNetCardMAC
    
{
       
            
private ManagementClass mc;
            
private ManagementObjectCollection moc;
            
public GetNetCardMAC()
            
{ }
            
/// <summary>
            
/// 取得设备网卡的MAC地址
            
/// </summary>

            public  string GetNetCardMacAddress()
            
{
                mc 
= new ManagementClass("Win32_NetworkAdapterConfiguration");
                moc 
= mc.GetInstances();
                
string str = "";
                
foreach (ManagementObject mo in moc)
                
{
                    
if ((bool)mo["IPEnabled"== true)
                        str 
= mo["MacAddress"].ToString();

                }

                
return str;
            }


        
    }

}


  切记要引用命名空间:using System.Management
  心中窃喜,呵呵还是比较简单的。测试,晕 ! 这么做获取的是服务器的MAC。
  要获取客户端的MAC用C#做就比较复杂了。网上也有很多类似的例子,不过获取客户端的信息最好还是用客户端脚本比较好。下面是个JavaScript的获取MAC的例子(转):
 
<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=192.168.0.2 name=txtIPAddr> <INPUT value=typ name=txtDNSName> </FORM></BODY></HTML>

经测试 ok 没有问题 o(∩_∩)o...哈哈 继续做……
posted @ 2008-01-04 09:41  kingboy  阅读(2993)  评论(2)    收藏  举报