我在公司用C#开发了一个小型的web系统,用户登陆时需要获取本地MAC地址保存到数据库。
现在出现的问题是,现在可以获取到。但当我到隔壁会议室或者用无线网络登陆系统时,就获取不到MAC地址。
请问这是为什么?有什么解决方法么?
请各位大侠帮忙啊!!

解决方案 »

  1.   

    using System.Text.RegularExpressions;
    using System.Diagnostics;
    public class test
    {
            public test
            {}
            public static string GetCustomerMac(string IP) //para IP is the client's IP 
            { 
                   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","");               Regex reg=new Regex("Mac[ ]{0,}Address[ ]{0,}=[ ]{0,}(?<key>((.)*?)) __MAC",RegexOptions.IgnoreCase|RegexOptions.Compiled); 
                   Match mc=reg.Match(dirResults+"__MAC");            if(mc.Success) 
                { 
                    return mc.Groups["key"].Value; 
               } 
                else 
               { 
                    reg=new Regex("Host not found",RegexOptions.IgnoreCase|RegexOptions.Compiled); 
                    mc=reg.Match(dirResults); 
                if(mc.Success) 
                { 
                     return "Host not found!"; 
                } 
                else 
                { 
                     return ""; 
                } 
           } 
      }
    }
    看看这个可不可以啊
      

  2.   

    IP数据包里面可以不包含MAC地址的。是通过IP寻找数据传送路径的。每个路由知道接入自己的终端的MAC和IP的对应关系就可以了,路由会定位。我不太记得清楚了,毕业后没用过了。好像以前在学校没钱交网费,遍历整个局域网,别人拿MAC地址和IP偷网上的时候,只能拿到本局域网的,因为路由知道接入他的终端的MAC,但是ping局域网外的就拿不到MAC。