几乎每个应用系统都有相应的权限管理功能。对于大型多用户应用系统,一般是将权限设置保存在数据库中。但是对于小型的单用户应用系统和非数据库应用系统,就没有必要将权限设置保存在数据库中,但是用文件来保存既不方便又不安全,因为文件很可能被删除或毁坏。其实,灵活地利用Windows注册表的特点,可以很方便地为应用系统设置用户名和口令,这种方法不但编程简便,而且安全性比较高。下面举例说明,该例程在Windows98,Delphi4环境下调试通过。设计流程为:先判断是否为第一次使用,如果为第一次使用,则要求设置新的用户名和口令,系统将用户名和口令保存起来;如果不是第一次使用,则要求输入用户名和口令才能登录。 在Delphi开发环境中,新建一个工程Project1,在ProjectBzAcFWRHt1中增加一个窗体Form1;在Form1上增加两个按纽,一个为确定,另一个为取消;再在Form1上增加两个Text框EditUser和EditPass,分别为用户名和口令输入框。定义窗体级全局变量RegF:Tregistry。并在interface的Uses中加上Registry。增加函数Wsz_IfFirst,判断是否是第一次使用;增加过程Wsz_SaveUse,保存用户名和口令;增加函数Wsz_CheckUser,判断用户名和口令是否正确。然后在Form1的FormShow事件和确定按纽事件中分别调用这三个函数和过程,达到设计要求。//判断是否是第一次使用functi编程客栈on Wsz_IfFirst:Boolean;varsUser:string;sPass:string;beginresult := 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)<=0) and (length(sPass)<=0)) thenresult := true ;RegF.Free;end;//判断用户名和口令是否编程客栈正确function Wsz_CheckUser(MyUser:string;MyPass :string):Boolean;varsUser:string;sPass:string;beginresult:= 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开发者_CICD) and (sPass=MyPass) thenresult := true;RegF.Free;end;//保存用户名和口令procedure Wsz_SaveUse编程客栈r(MyUser:string;MyPass :string);beginRegF:=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);beginClose;end;//确定按纽事件procedure TWszLoginForm.BitBtnYesClick(Sender: Tobject);varsuser:string;spass:string;beginsuser := trim(edituser.text);spass := trim(editpass.text);if (length(suser)<=0) or (length(spass)<=0) thenbeginApplication.MessageBox("用户名和口令都必须输入!", "系统提示",MB_OK + MB_ICONINFORMATION);edituser.SetFocus ;exit;end;if Wsz_IfFirst thenbegin//处理第一次登录的用户名和口令if Application.MessageBox("您是第一次使用本软件,请记住您的用户名和口令,以编程客栈便下次登录。现在进入系统吗?", "系统提示",MB_OKCANCEL + MB_ICONQUESTION) = IDOK thenbegin//保存Wsz_SaveUser(suser,spass);endelsebeginedituser.SetFocus ;exit;end;end elsebeginif not Wsz_CheckUser(suser,spass) thenbeginApplication.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);beginif Wsz_IfFirst thenbeginApplication.MessageBox("您是第一次使用本软件,您可以随便输入用户名和口令。", "系统提示",MB_OK + MB_ICONINFORMATION);end;end;
精彩评论