
本例中TRegistry是关键类 Delphi 不能自行加入 需在uses部分手工加入 registry 通过其方法 ReadString 和 WriteString 来读出和写入字符 亦可通过其方法 ReadDate 和 WriteDate 来读出和写入日期
程序第一次运行就写入其运行时间 应用期限为 天 超过 天就不再运行 全局变量NoRegistry SpareDays来分别判断是否注册和剩余期限 自定义函数Encrypt为用户名到
密码的变换函数
一 程序启动时 通过搜索注册表 判断是否第一次运行和是否注册 来确定程序是否运行
procedure TForm FormCreate(Sender: TObject);var Reg:Tregistry;KeyName TempCode TempName TempStr:string; Same:Integer; FirstDate NowDate:Tdatetime; NumberOfDays:real;begin NoRegistry:=true;NowDate:=date; //取得运行时系统日期try//创建注册表 有该键则读取 无则创建 Reg:=Tregistry Create ; Reg RootKey :=ey_local_machine; KeyName:= Sofarejsjbxample ; if Reg OpenKey(KeyName true) then begin TempName:=Reg ReadString( UsrName ); TempCode:=Reg ReadString( Passwd );//读取用户名 注册号 try FirstDate:=Reg ReadDate( Date );//非第一次则读入第一次运行时间 except Reg WriteDate( Date NowDate);// 若为第一次运行 则写入系统日期 FirstDate:=NowDate; end; end ; reg CloseKey ; finally reg Free ; end; TempStr:=Encrypt(TempName);//通过自定义函数Encrypt()来获取密码 Same:=CompareText(TempStr TempCode);//比较密码 if TempName<> then if Same= then NoRegistry:=false;//验证密码 通过NoRegistry为false if NoRegistry then begin //若未注册 NumberOfDays:=Nowdate FirstDate;SpareDays:=round( NumberOfDays);Label Caption :=FloatToStr(SpareDays);if((NumberOfDays> ) or (NumberOfDays< )) thenbeginshowmessage( 程序未注册超过试用期或更改系统时间 将终止运行! );application Terminate;//超过 天 则禁止运行end;end;end;
二 注册过程 其响应入口可放于 About 内
procedure TAbout Button Click(Sender: TObject);var InptName InptCode RealCode:String; Same:Integer; Reg:Tregistry; Keyname:String;begin if NoRegistry then //未注册时做 begin RealCode:= ; InptName:= InputBox( 注册 输入你的名字 ); if InptName<> then begin InptCode:= InputBox( 注册 输入注册号 ); RealCode:=Encrypt(InptName);Same:=CompareText(RealCode InptCode); if (Same<> ) thenshowmessage( 注册号码不对 注册未成功! ) else begin //密码匹配时做 把用户名 密码写入注册表 TryReg:=Tregistry Create ;Reg RootKey :=ey_local_machine;KeyName:= Sofarejsjbxample ;if Reg OpenKey(KeyName true) then beginReg WriteString( Passwd InptCode);Reg WriteString( UsrName InptName); end; reg CloseKey ; finally Reg Free ; end; NoRegistry:=false;//可修改注册后的界面 end; end; end;end; 三 密码的变换函数 此变换函数可由读者自由发挥 在此 仅示一例而已
lishixinzhi/Article/program/Delphi/201311/8395
以上就是关于Delphi程序的时限和加密方法全部的内容,包括:Delphi程序的时限和加密方法、、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)