用Delphi编写口令保护程序

Author: 秦志强 Date: 2001年 42期

?牐犗嘈糯蠹叶约扑慊τ玫陌踩欠浅V厥拥模簧倥笥讯级员嘈纯诹畋;こ绦蚝芨行巳ぁO旅妫揖鸵訢elphi为例,讲解一下自己的编码思路,希望能对大家有所帮助。
  ?牐犝飧龀绦蜃罟丶囊坏闶嵌宰⒉岜斫胁僮鳌T贒elphi中要对注册表进行操作,它有一个专门的组件TRegistry,需要在interface中的users中添加Registry。并增加一个全局变量Reg:TRigistry,在程序段中加入Reg:=TRegistry。确定所需要的根主键是:Reg.BootKey:=主键名,打开子键是Reg.OpenKey(子键名,CanCreate:Boolean),读出数值是Reg.ReadString(数值名),写入数据是Reg.WriteString(数值名,键值)。以下是关于这一部分的一个ReadReg过程:
  ?牐爌rocedure ReadReg;??
  ?牐燽egin;
  ?牐燫eg:=TRegistry.Create; ??
  ?牐燫eg.RootKey:=HKEY_LOCAL_MACHINE;??
  ?牐燫eg.OpenKey('SOFTWARE\MicroSoft\sl001':true);?牔?
  ?牐爀nd;??
  ?牐犗衷诰捅究诹畋;こ绦虻闹葱泄汤此狄幌缕渌际醯恪?
  ?牐?1.程序运行首先把系统热键屏蔽,把鼠标固定在一定范围内,主要是用到了两个API函数:SystemParametersInfo和ClipCursor,代码段如下:
  ?牐爌rocedure LockScreen;??
  ?牐爒ar MouseNarrow:TRect;??
  ?牐燽egin;
  ?牐燤ouseNarrow:=form1.BoundsRect;??
  ?牐燙lipCursor(@MouseNarrow);?牔?
  ?牐燬ystemParametersInfo(SPI_SCREENSAVERRUNNING,1,0,0);?牔?
  ?牐爀nd;??
  ?牐?2.在利用注册表实现程序开机自动执行时,程序有可能会被用户更改路径,一旦这种情况发生,系统就找不到相应的程序并提示出错。为了解决这个问题,在注册表中写入的程序路径就应该是相对路径,它可以随程序目录的改变而发生变化,这主要用到了一个API函数ExtractFileDir(Application.Exename),它的作用是得到当前程序的路径,所以自动注册的程序段如下:
  ?牐爌rocedure AutoReg;??
  ?牐燽egin;
  ?牐燫eadReg;??
  ?牐燫eg.OpenKey:'\SOFTWARE\Microsoft\windows\CurrentVersion\Run';true;?牔?
  ?牐燫eg.WriteString;'slook;Application.Exename;?牔?
  ?牐爀nd;??
  ?牐?3.运行程序判断是否是第一次使用,如果是的话,要求输入新密码。实现方法很简单,就是判断有没有在注册表中存入口令,如果口令已经存在的话,就不是第一次使用,代码段如下:
  ?牐爁unction FirstUse:Boolean;??
  ?牐燽egin;
  ?牐爎esult:=false;??
  ?牐燫eadReg;??
  ?牐爏Pass:=Reg.ReadString('pass');?牔?
  ?牐爄f length(sPass);??
  ?牐犝庋桓隹诹畋;こ绦蚓途弑赋土耍共豢焓允裕?