电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

用注册表给应用程序加口令


发布日期:2023/10/22
 
几乎每个应用系统都有相应的权限管理功能对于大型多用户应用系统一般是将权限设置保存在数据库中但是对于小型的单用户应用系统和非数据库应用系统就没有必要将权限设置保存在数据库中但是用文件来保存既不方便又不安全因为文件很可能被删除或毁坏其实灵活地利用Windows注册表的特点可以很方便地为应用系统设置用户名和口令这种方法不但编程简便而且安全性比较高下面举例说明该例程在WindowsDelphi环境下调试通过

设计流程为先判断是否为第一次使用如果为第一次使用则要求设置新的用户名和口令系统将用户名和口令保存起来如果不是第一次使用则要求输入用户名和口令才能登录

在Delphi开发环境中新建一个工程Project在Project中增加一个窗体Form在Form上增加两个按纽一个为确定另一个为取消再在Form上增加两个Text框EditUser和EditPass分别为用户名和口令输入框定义窗体级全局变量RegF:TRegistry并在interface的Uses中加上Registry

增加函数Wsz_IfFirst判断是否是第一次使用增加过程Wsz_SaveUse保存用户名和口令增加函数Wsz_CheckUser判断用户名和口令是否正确然后在Form的FormShow事件和确定按纽事件中分别调用这三个函数和过程达到设计要求

//判断是否是第一次使用

function Wsz_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://判断用户名和口令是否正确

function Wsz_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://保存用户名和口令

procedure Wsz_SaveUser(MyUser:string;MyPass :string);

begin

RegF:=TRegistryCreate;

RegFRootKey :=HKEY_LOCAL_MACHINE;

RegFOpenKey(SOFTWARE\MicroSoft\whhTRUE);

RegFWriteString(userMyUser);

RegFWriteString(passMyPass);

RegFFree;

end;

file://取消按纽事件

procedure TWszLoginFormBitBtnCloseClick(Sender: TObject);

begin

Close;

end;

file://确定按纽事件

procedure TWszLoginFormBitBtnYesClick(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;

if Wsz_IfFirst then

begin

file://处理第一次登录的用户名和口令

if ApplicationMessageBox(

您是第一次使用本软件请记住您的用户名和口令

以便下次登录现在进入系统吗?

系统提示

MB_OKCANCEL + MB_ICONQUESTION) = IDOK then

begin

file://保存

Wsz_SaveUser(suserspass);

end

else

begin

edituserSetFocus ;

exit;

end;

end else

begin

if not Wsz_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事件

procedure TWszLoginFormFormShow(Sender: TObject);

begin

if Wsz_IfFirst then

begin

ApplicationMessageBox(

您是第一次使用本软件您可以随便输入用户名和口令

系统提示

MB_OK + MB_ICONINFORMATION);

end;

end;

上一篇:硬盘分区-用好XP和2003自带工具(上)

下一篇:WindowsXPSP3真有那么神奇吗?