时间:2016-02-15 21:56 来源: 我爱IT技术网 作者:佚名
欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【asp.net根据计算机MAC地址限定每台机子只能领取一次账号】,下面是详细的讲解!
asp.net根据计算机MAC地址限定每台机子只能领取一次账号
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text.RegularExpressions;
using System.Diagnostics;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
labName.Text=labPass.Text="";
}
protected void getNamePass_Click(object sender, EventArgs e)
{
//获取客户端的IP地址
string IP=Request.UserHostAddress;
//创建字符串变量
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>");
}
}
}
}
}
关于asp.net根据计算机MAC地址限定每台机子只能领取一次账号的用户互动如下:
相关问题:
答: >>详细
相关问题:
答: >>详细
相关问题:
答: >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
