几乎每个应用系统都有相应的权限管理功能对于大型多用户应用系统一般是将权限设置保存在数据库中但是对于小型的单用户应用系统和非数据库应用系统就没有必要将权限设置保存在数据库中但是用文件来保存既不方便又不安全因为文件很可能被删除或毁坏其实灵活地利用Windows注册表的特点可以很方便地为应用系统设置用户名和口令这种方法不但编程简便而且安全性比较高下面举例说明该例程在WindowsDelphi环境下调试通过 设计流程为先判断是否为第一次使用如果为第一次使用则要求设置新的用户名和口令系统将用户名和口令保存起来如果不是第一次使用则要求输入用户名和口令才能登录 在Delphi开发环境中新建一个工程Project在Project中增加一个窗体Form在Form上增加两个按纽一个为确定另一个为取消再在Form上增加两个Text框EditUser和EditPass分别为用户名和口令输入框定义窗体级全局变量RegF:TRegistry并在interface的Uses中加上Registry 增加函数Wsz_IfFirst判断是否是第一次使用增加过程Wsz_SaveUse保存用户名和口令增加函数Wsz_CheckUser判断用户名和口令是否正确然后在Form的FormShow事件和确定按纽事件中分别调用这三个函数和过程达到设计要求 //判断是否是第一次使用 functionWsz_IfFirst:Boolean; var sUser:string; sPass:string; begin result:=false; RegF:=TRegistryCreate; RegFRootKey:=HKEY_LOCAL_MACHINE; RegFOpenKey(SOFTWARE\MicroSoft\whhTRUE); sUser:=RegFReadString(user); sPass:=RegFReadString(pass); if((length(sUser)=)and(length(sPass)=))then result:=true; RegFFree; end; file://判断用户名和口令是否正确 functionWsz_CheckUser(MyUser:string;MyPass:string):Boolean; var sUser:string; sPass:string; begin result:=false; RegF:=TRegistryCreate; RegFRootKey:=HKEY_LOCAL_MACHINE; RegFOpenKey(SOFTWARE\MicroSoft\whhTRUE); sUser:=RegFReadString(user); sPass:=RegFReadString(pass); if(sUser=MyUser)and(sPass=MyPass)then result:=true; RegFFree; end; file://保存用户名和口令 procedureWsz_SaveUser(MyUser:string;MyPass:string); begin RegF:=TRegistryCreate; RegFRootKey:=HKEY_LOCAL_MACHINE; RegFOpenKey(SOFTWARE\MicroSoft\whhTRUE); RegFWriteString(userMyUser); RegFWriteString(passMyPass); RegFFree; end; file://取消按纽事件 procedureTWszLoginFormBitBtnCloseClick(Sender:TObject); begin Close; end; file://确定按纽事件 procedureTWszLoginFormBitBtnYesClick(Sender:TObject); var suser:string; spass:string; begin suser:=trim(editusertext); spass:=trim(editpasstext); if(length(suser)=)or(length(spass)=)then begin ApplicationMessageBox(用户名和口令都必须输入! 系统提示 MB_OK+MB_ICONINFORMATION); edituserSetFocus; exit; end; ifWsz_IfFirstthen begin file://处理第一次登录的用户名和口令 ifApplicationMessageBox( 您是第一次使用本软件请记住您的用户名和口令 以便下次登录现在进入系统吗? 系统提示 MB_OKCANCEL+MB_ICONQUESTION)=IDOKthen begin file://保存 Wsz_SaveUser(suserspass); end else begin edituserSetFocus; exit; end; endelse begin ifnotWsz_CheckUser(suserspass)then begin ApplicationMessageBox (对不起用户名和口令输入不正确!系统提示 MB_OK+MB_ICONINFORMATION); editusersetfocus; exit; end; end; file://全局变量 GB_Wsz_User:=suser; GB_Wsz_PASS:=spass; Close; end; file://窗体的Show事件 procedureTWszLoginFormFormShow(Sender:TObject); begin ifWsz_IfFirstthen begin ApplicationMessageBox( 您是第一次使用本软件您可以随便输入用户名和口令 系统提示 MB_OK+MB_ICONINFORMATION); end; end; |