微信公众号 
图码生活

每天发布有五花八门的文章,各种有趣的知识等,期待您的订阅与参与
电脑报 1992-2001 十年文章全集
电脑报 1992-2001 十年文章全集
包含从 1992 年 - 2001 年间,两万余篇期刊文章,查询最少输入两个字符
随便看看
读取中
读取中
标题用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);
  这样,一个口令保护程序就具备雏型了,还不快试试!