几乎每个应用系统都有相应的权限管理功能。对于大型多用户应用系统,一般是将权限设置保存在数据库中。但是对于小型的单用户应用系统和非数据库应用系统,就没有必要将权限设置保存在数据库中,但是用文件来保存既不方便又不安全,因为文件很可能被删除或毁坏。其实,灵活地利用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;
[聊天工具]为了QQ的小太阳挂机、DIY软件齐上阵 [系统软件]防毒防盗,安全先从注册表开刀 [系统软件]菜鸟玩转注册表 RegistryWorkshop试用 [系统软件]教你用RegFix修复Windows注册表关键键值 [系统软件]悬而未决:如果改一个未能启动的WINXP注册表 [常用软件]Maxthon起始页也能DIY [常用软件]PocoMaker魅客:电子杂志、相册DIY [常用软件]谁与争锋 IE 7.0 Beta 1全面试用 [常用软件][注册表]注册DLL控件 让IE浏览器复活 [常用软件]翻新 添加IE工具栏按钮三法
|