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

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

(0)

相关推荐

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

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

  • 利用注册表限制特定程序运行—注册表使用全攻略之十四

    利用注册表限制特定程序运行-注册表使用全攻略之十四 对于一些与系统密切相关的程序,如果随意让其他人使用,非常容易造成死机甚至系统崩溃.通过系统本身的注册表来限制特定程序的运行. 1.一键锁通关 我们要做的是在注册表中加入"RestrictRun"键值,以此来限制绝大多数程序的运行 . 运行"Regedit"打开注册表编辑器,展开HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\E

  • c++ 写注册表方式让程序开机自启动

    打开注册表:win+R, 输入regedit 点击确定 你会看到五个根目录,开机自启动的信息写在 HKEY_LOCAL_MACHINE 下面,具体的目录为 SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run 要怎么将开机自启动的信息写入注册表中呢?其实过程很简单,第一步,打开注册表,第二步,写注册表,第三步,关闭键的句柄 打开注册表要使用RegOpenKeyEx 函数 LONGRegOpenKeyEx( HKEYhKey, // 需要打开的主键的名

  • 小技巧一则 轻松在注册表中清除IE安全口令

    有的朋友喜欢把IE浏览器的"分级审查"功能开启并设置口令("Internet选项→内容→分级审查").这样,在显示有"ActiveX"的页面时,总会出现"分级审查不允许查看"的提示信息,然后弹出口令对话框,要求您输入监护人口令.如果口令不对,则停止浏览. 但是,如果此口令遗忘了,则无法浏览这些页面.即使重新安装IE浏览器也无法去掉安全口令.这时,可以借助注册表来清除.运行"regedit.exe"命令,打开

  • 技巧:通过改注册表给网上邻居加把锁

    笔者是一名微机管理员,学生在上机时经常通过网上邻居进行信息访问,往往给机房管理带来很大麻烦,为了解决这个问题,采用的方法是禁止打开网上邻居窗口,我们可以通过修改注册表完成. 具体方法是: 在Windows 98下,依次点击"开始→运行→regedit"打开注册表编辑器,找到"HKEY_CLASSES_ROOT\CLSID\{208D2C60-3AEA-1069-A2D7-08002B30309D}\InProcServer32"分支,将右窗格中的项值"默认

  • 二十九、教你备份与恢复Windows 2000注册表

    二十九.教你备份与恢复Windows 2000注册表  Windows 2000将它的配置信息存储在注册表的数据库中,其中包含了每个计算机用户的配置文件,以及有关系统硬件.已安装的程序和属性设置等信息,Windows 2000在运行过程中要一直引用这些信息.注册表是以二进制形式存储在硬盘上,错误地编辑注册表可能会严重损坏系统.所以,在更改注册表之前,强烈建议备份注册表信息.为了防止在修改注册表的时候发生致命错误,有必要了解一下注册表文件的备份和恢复方法.除此之外,为了研究注册表的结构,还可以将注

  • Windows系统注册表知识完全揭密

    Windows注册表是帮助Windows控制硬件.软件.用户环境和Windows界面的一套数据文件,注册表包含在Windows目录下两个文件system.dat和user.dat里,还有它们的备份system.da0和user.da0.通过Windows目录下的regedit.exe程序可以存取注册表数据库.在以前,在windows的更早版本(在Win95以前),这些功能是靠win.ini,system.ini和其他和应用程序有关联的.ini文件来实现的. 在windows操作系统家族中,sys

  • Win2k注册表备份恢复详解

    Windows 2000 将它的配置信息存储在名为注册表的数据库中,其中包含了每个计算机用户的配置文件,以及有关系统硬件.已安装的程序和属性设置等信息,Windows 2000 在运行过程中要一直引用这些信息.注册表是以二进制形式存储在硬盘上,错误地编辑注册表可能会严重损坏系统.所以,在更改注册表之前,强烈建议备份注册表信息.为了防止在修改注册表的时候发生致命错误,有必要了解一下注册表文件的备份和恢复方法.除此之外,为了研究注册表的结构,还可以将注册表中的某一主键或子键保存为文本文件,或者打印出

  • 浅谈Java读写注册表的方式Preferences与jRegistry

    本文研究的主要是Java 读写注册表的两种方式 Preferences 与 jRegistry的相关内容,具体介绍如下. 由于java程序是"write once, run everywhere",用java读写注册表,那程序的跨平台性就差了.java对注册表的操作,在jdk1.4以前的版本中,那是不可能的,只能用JNI来实现:然而jdk1.4之后提供的prefs包可以操作windows注册表,不过定死了root只在SOFTWARE/JavaSoft/prefs下,估计也是出于这种两难

  • 如何在C#中使用注册表

    一.什么是注册表 注册表是Microsoft Windows操作系统和其应用程序中的一个重要的层次型数据库,用于存储系统和应用程序的设置信息.由键(key,或称"项").子键(subkey,子项)和值项(value)构成.一个键就是树状数据结构中的一个节点,而子键就是这个节点的子节点,子键也是键.一个值项则是一个键的一条属性,由名称(name).数据类型(datatype)以及数据(data)组成.一个键可以有一个或多个值,每个值的名称各不相同,如果一个值的名称为空,则该值为该键的默认

随机推荐