分享
 
 
 

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

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

几乎每个应用系统都有相应的权限管理功能。对于大型多用户应用系统,一般是将权限设置保存在数据库中。但是对于小型的单用户应用系统和非数据库应用系统,就没有必要将权限设置保存在数据库中,但是用文件来保存既不方便又不安全,因为文件很可能被删除或毁坏。其实,灵活地利用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)<=0) and (length(sPass)<=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.Free;

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)<=0) or (length(spass)<=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;

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有