设为主页 | 加入收藏 | 繁體中文

【WinXP】用注册表给应用程序加口令

  几乎每个应用系统都有相应的权限管理功能。对于大型多用户应用系统,一般是将权限设置生存在数据库中。但是对于小型的单用户应用系统和非数据库应用系统,就没有须要将权限设置生存在数据库中,但是用文件来生存既不方便又不安全,因为文件很可能被删除或毁坏。其实,机动地利用Windows注册表的特点,可以很方便地为应用系统设置用户名和口令,这种方法不光编程轻便,并且安全性比较高。下面举例阐明,该例程在Windows98,Delphi4情况下调试通过。
  计划流程为:先判断能否为第一次利用,如果为第一次利用,则要求设置新的用户名和口令,系统将用户名和口令生存起来;如果不是第一次利用,则要求输入用户名和口令才能登录。
  在Delphi开辟情况中,新建一个工程Project1,在Project1中增加一个窗体Form1;在Form1上增加两个按纽,一个为确定,另一个为取消;再在Form1上增加两个Text框EditUser和EditPass,分别为用户名和口令输入框。界说窗体级全局变量RegF:TRegistry。并在interface的Uses中加上Registry。
  增加函数Wsz_IfFirst,判断能否是第一次利用;增加过程Wsz_SaveUse,生存用户名和口令;增加函数Wsz_CheckUser,判断用户名和口令能否精确。然后在Form1的FormShow事件和确定按纽事件中分别调用这三个函数和过程,到达计划要求。
  //判断能否是第一次利用
  function Wsz_IfFirst:Boolean;
  var
  sUser:string;
  sPass:string;
  begin
  result := false;
  RegF:=TRegistry.Create;
  RegF.RootKey :=HKEY_LOCAL_MACHINE;
  RegF.OpenKey("SOFTWARE\MicroSoft\whh726",TRUE);
  sUser := RegF.ReadString("user");
  sPass := RegF.ReadString("pass");
  if ((length(sUser)$#@60;=0) and (length(sPass)$#@60;=0)) then
  result := true ;
  RegF.Free;
  end;
  //判断用户名和口令能否精确
  function Wsz_CheckUser(MyUser:string;MyPass :string):Boolean;
  var
  sUser:string;
  sPass:string;
  begin
  result:= false;
  RegF:=TRegistry.Create;
  RegF.RootKey :=HKEY_LOCAL_MACHINE;
  RegF.OpenKey("SOFTWARE\MicroSoft\whh726",TRUE);
  sUser := RegF.ReadString("user");
  sPass := RegF.ReadString("pass");
  if (sUser=MyUser) and (sPass=MyPass) then
  result := true;
  RegF ee;
  end;
  //生存用户名和口令
  procedure Wsz_SaveUser(MyUser:string;MyPass :string);
  begin
  RegF:=TRegistry.Create;
  RegF.RootKey :=HKEY_LOCAL_MACHINE;
  RegF.OpenKey("SOFTWARE\MicroSoft\whh726",TRUE);
  RegF.WriteString("user",MyUser);
  RegF.WriteString("pass",MyPass);
  RegF.Free;
  end;
  //取消按纽事件
  procedure TWszLoginForm.BitBtnCloseClick(Sender: TObject);
  begin
  Close;
  end;
  //确定按纽事件
  procedure TWszLoginForm.BitBtnYesClick(Sender: TObject);
  var
  suser:string;
  spass:string;
  begin
  suser := trim(edituser.text);
  spass := trim(editpass.text);
  if (length(suser)$#@60;=0) or (length(spass)$#@60;=0) then
  begin
  Application.MessageBox("用户名和口令都必须输入!", "系统提示",
  MB_OK + MB_ICONINFORMATION);
  edituser.SetFocus ;
  exit;
  end;
  if Wsz_IfFirst then
  begin
  //处理第一次登录的用户名和口令
  if Application.MessageBox(
  "您是第一次利用本软件,请记住您的用户名和口令,以便下次登录。如今进入系统吗?",
  "系统提示",
  MB_OKCANCEL + MB_ICONQUESTION) = IDOK then
  begin
  //生存
  Wsz_SaveUser(suser,spass);
  end
  else
  begin
  edituser.SetFocus ;
  exit;
  end;
  end else
  begin
  if not Wsz_CheckUser(suser,spass) then
  begin
  Application.MessageBox("对不起,用户名和口令输入不精确!",
  "系统提示",
  MB_OK + MB_ICONINFORMATION);
  edituser.setfocus ;
  exit;
  end;
  end;
  //全局变量
  GB_Wsz_User := suser;
  GB_Wsz_PASS := spass;
  Close;
  end;
  //窗体的Show事件
  procedure TWszLoginForm.FormShow(Sender: TObject);
  begin
  if Wsz_IfFirst then
  begin
  Application.MessageBox(
  "您是第一次利用本软件,您可以任意输入用户名和口令。",
  "系统提示",
  MB_OK + MB_ICONINFORMATION);
  end;
  end;
 


    文章作者: 福州军威计算机技术有限公司
    军威网络是福州最专业的电脑维修公司,专业承接福州电脑维修、上门维修、IT外包、企业电脑包年维护、局域网网络布线、网吧承包等相关维修服务。
    版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和声明。否则将追究法律责任。

TAG:
评论加载中...
内容:
评论者: 验证码: