用Delphi编写口令保护程序 秦志强 2001年 42期 相信大家对计算机应用的安全是非常重视的,不少朋友都对编写口令保护程序很感兴趣。下面,我就以Delphi为例,讲解一下自己的编码思路,希望能对大家有所帮助。   这个程序最关键的一点是对注册表进行操作。在Delphi中要对注册表进行操作,它有一个专门的组件TRegistry,需要在interface中的users中添加Registry。并增加一个全局变量Reg:TRigistry,在程序段中加入Reg:=TRegistry。确定所需要的根主键是:Reg.BootKey:=主键名,打开子键是Reg.OpenKey(子键名,CanCreate:Boolean),读出数值是Reg.ReadString(数值名),写入数据是Reg.WriteString(数值名,键值)。以下是关于这一部分的一个ReadReg过程:   procedure ReadReg;   begin;   Reg:=TRegistry.Create;    Reg.RootKey:=HKEY_LOCAL_MACHINE;   Reg.OpenKey('SOFTWARE\MicroSoft\sl001':true);   end;   现在就本口令保护程序的执行过程来说一下其它技术点。   1.程序运行首先把系统热键屏蔽,把鼠标固定在一定范围内,主要是用到了两个API函数:SystemParametersInfo和ClipCursor,代码段如下:   procedure LockScreen;   var MouseNarrow:TRect;   begin;   MouseNarrow:=form1.BoundsRect;   ClipCursor(@MouseNarrow);   SystemParametersInfo(SPI_SCREENSAVERRUNNING,1,0,0);   end;   2.在利用注册表实现程序开机自动执行时,程序有可能会被用户更改路径,一旦这种情况发生,系统就找不到相应的程序并提示出错。为了解决这个问题,在注册表中写入的程序路径就应该是相对路径,它可以随程序目录的改变而发生变化,这主要用到了一个API函数ExtractFileDir(Application.Exename),它的作用是得到当前程序的路径,所以自动注册的程序段如下:   procedure AutoReg;   begin;   ReadReg;   Reg.OpenKey:'\SOFTWARE\Microsoft\windows\CurrentVersion\Run';true;   Reg.WriteString;'slook;Application.Exename;   end;   3.运行程序判断是否是第一次使用,如果是的话,要求输入新密码。实现方法很简单,就是判断有没有在注册表中存入口令,如果口令已经存在的话,就不是第一次使用,代码段如下:   function FirstUse:Boolean;   begin;   result:=false;   ReadReg;   sPass:=Reg.ReadString('pass');   if length(sPass);   这样,一个口令保护程序就具备雏型了,还不快试试!