动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   服务器 → 阅读文章
  

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

作者来源:51CTO.com整理  
阅读 数 167 人次 , 2006-3-18 13:34:00 

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

file://判断用户名和口令是否正确

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;

file://保存用户名和口令

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;

file://取消按纽事件

procedure TWszLoginForm.BitBtnCloseClick(Sender: TObject);

begin

 Close;

end;

file://确定按纽事件

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

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

if Application.MessageBox(

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

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

 "系统提示",

 MB_OKCANCEL + MB_ICONQUESTION) = IDOK then

 begin

file://保存

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;

 file://全局变量

 GB_Wsz_User := suser;

 GB_Wsz_PASS := spass;

 Close;

 end;

 file://窗体的Show事件

procedure TWszLoginForm.FormShow(Sender: TObject);

 begin

if Wsz_IfFirst then

 begin

Application.MessageBox(

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

"系统提示",

MB_OK + MB_ICONINFORMATION);

end;

 end;



 
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:MS-DOS方式下对注册表的编程
· 下一篇:注册表监视软件REGMON
· 让Windows数据进行安全转移技巧
· 解决任务栏假死的几种办法
· Linux赋予普通用户特殊权限
· WIN2003下DHCP服务器配置指南(1)
· 解决基于NT内核的操作系统启动故障(5)


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077