获取MAC--实现一台机器每次领取一个帐号

 //获取客户端的IP地址
             string IP = "192.168.1.*";
            //创建字符串变量
            string dirResults = "";
            //创建ProcessStartInfo对象表示启动进程时使用的一组值
            ProcessStartInfo psi = new ProcessStartInfo();
            //创建Process对象使您能够启动和停止本地系统进程
            Process proc = new Process();
            //设置要启动的应用程序或文档
            psi.FileName = "nbtstat";
            //设置不从Process.StandardInput流中读取输入
            psi.RedirectStandardInput = false;
            //设置要输出写入 Process.StandardOutput流
            psi.RedirectStandardOutput = true;
            //设置启动的应用程序中的一组命令参数
            psi.Arguments = "-A " + IP;
            //设置从可执行文件创建进程
            psi.UseShellExecute = false;
            //设置启动进程
            proc = Process.Start(psi);
            //获取StandardOutput输出流
            dirResults = proc.StandardOutput.ReadToEnd();
            //设置Process 组件无限期地等待关联进程退出
            proc.WaitForExit();
            //替换掉StandardOutput输出流中的"/r,/n,/t"
            dirResults = dirResults.Replace("\r", "").Replace("\n", "").Replace("\t", "");
            //设置正则表达式
            Regex reg = new Regex("MAC[ ]{0,}Address[ ]{0,}=[ ]{0,}(?<key>((.)*?))MAC", RegexOptions.IgnoreCase | RegexOptions.Compiled);
            //向获取的StandardOutput输出流添加"MAC"字符串
            dirResults = dirResults + "MAC";
            //获取Cookie
            HttpCookie oldCookie = Request.Cookies["netCard"];
            //获取正则表达式中的匹配项
            Match mc = reg.Match(dirResults);
            //获取网卡号去除掉“-”符合
            string networkCard = mc.Groups["key"].Value.Replace("-", "");
            //判断Cookie是否为空
            if (oldCookie == null)
                       
                //判断是否符合正则表达式的要求
                if (mc.Success)
                {
                  
                    //显示帐号
                    labName.Text = "您的帐号为:" + networkCard;
                    //显示密码
                    labPass.Text = "您的密码为:1234";
                    //创建Cookie对象
                    HttpCookie newCookie = new HttpCookie("netCard");
                    //设置Cookie的有效时间
                    newCookie.Expires = DateTime.MaxValue;
                    //添加Cookie中的值
                    newCookie.Values.Add("numberCard", networkCard);
                    //将Cookie添加到Cookie集合中
                    Response.Cookies.Add(newCookie);
                }
                else
                {
                    RegisterStartupScript("", "<script>alert( '您没有联网!');</script>");

                }
            }
            else
            {
                //获取Cookie中的网卡号
                string numberCard = oldCookie.Values["numberCard"];
                //判断Cookie中的网卡号是否和获取到的网卡号一致
                if (numberCard.Trim() == networkCard.Trim())
                {
                    RegisterStartupScript("", "<script>alert('很抱歉!您的计算机已领取过帐号。')</script>");
                }
                else
                {
                    //判断是否符合正则表达式的要求
                    if (mc.Success)
                    {
                        //显示帐号
                        labName.Text = "您的帐号为:" + networkCard;
                        //显示密码
                        labPass.Text = "您的密码为:1234";
                        //修改Cookie中的值
                        oldCookie.Values.Set("numberCard", networkCard);
                        //将Cookie添加到Cookie集合中
                        Response.Cookies.Add(oldCookie);                       
                    }
                    else
                    {
                        RegisterStartupScript("", "<script>alert( '您没有联网!');</script>");

                    }
                }
                   

    }

posted @ 2011-11-10 14:50  双魂人生  阅读(494)  评论(1编辑  收藏  举报