none
在.net的web服务器中可以不安装插件得到访问者的机器mac地址吗? RRS feed

答案

  • #region 获得客户端mac地址
        public string GetCustomerMac(string IP) //para IP is the client's IP
        {
            if (IP == "127.0.0.1")
            {
                return GetLocalMac();
            }//"00-04-61-5C-31-52";//00-0F-1F-C6-B2-B3 
            else
            {
                string dirResults = "";
                ProcessStartInfo psi = new ProcessStartInfo();
                Process proc = new Process();
                psi.FileName = "nbtstat";
                psi.RedirectStandardInput = false;
                psi.RedirectStandardOutput = true;
                psi.Arguments = "-A " + IP;
                psi.UseShellExecute = false;
                proc = Process.Start(psi);
                dirResults = proc.StandardOutput.ReadToEnd();
                proc.WaitForExit();
                dirResults = dirResults.Replace("\r", "").Replace("\n", "").Replace("\t", "");
                int i = dirResults.LastIndexOf("=");
                dirResults = dirResults.Substring(i + 2, 17);
                if (dirResults.IndexOf("本地连接") != -1)
                { dirResults = "没有得到mac"; }
                return dirResults;
            }
        }
         #endregion
    这个古籍得需要客户端的权限的 如果有客户端防火墙等估计获取不到的
    努力着就不会放弃!.net技术交流群 33083877http://hi.baidu.com/1987raymond
    2009年6月3日 2:36
    版主
  • 你好!
         找到一个使用JS来获取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 >

    周雪峰
    2009年6月3日 3:21
    版主
  • 局域网内可以,过了交换机路由就不行了
    知识改变命运,奋斗成就人生!
    2009年6月3日 3:32
    版主

全部回复

  • #region 获得客户端mac地址
        public string GetCustomerMac(string IP) //para IP is the client's IP
        {
            if (IP == "127.0.0.1")
            {
                return GetLocalMac();
            }//"00-04-61-5C-31-52";//00-0F-1F-C6-B2-B3 
            else
            {
                string dirResults = "";
                ProcessStartInfo psi = new ProcessStartInfo();
                Process proc = new Process();
                psi.FileName = "nbtstat";
                psi.RedirectStandardInput = false;
                psi.RedirectStandardOutput = true;
                psi.Arguments = "-A " + IP;
                psi.UseShellExecute = false;
                proc = Process.Start(psi);
                dirResults = proc.StandardOutput.ReadToEnd();
                proc.WaitForExit();
                dirResults = dirResults.Replace("\r", "").Replace("\n", "").Replace("\t", "");
                int i = dirResults.LastIndexOf("=");
                dirResults = dirResults.Substring(i + 2, 17);
                if (dirResults.IndexOf("本地连接") != -1)
                { dirResults = "没有得到mac"; }
                return dirResults;
            }
        }
         #endregion
    这个古籍得需要客户端的权限的 如果有客户端防火墙等估计获取不到的
    努力着就不会放弃!.net技术交流群 33083877http://hi.baidu.com/1987raymond
    2009年6月3日 2:36
    版主
  • 你好!
         找到一个使用JS来获取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 >

    周雪峰
    2009年6月3日 3:21
    版主
  • 局域网内可以,过了交换机路由就不行了
    知识改变命运,奋斗成就人生!
    2009年6月3日 3:32
    版主