织梦CMS - 轻松建站从此开始!

罗索

有关时间限制使用和软件注册的设计

落鹤生 发布于 2009-07-23 17:41 点击:次 
绝大部分的软件都需要实现注册功能,而具体到实现方法又会分很多种,本文仅仅是提供了一种思路,希望能对你有帮助。以下是实现的源代码,仅供您的参考。
TAG:

绝大部分的软件都需要实现注册功能,而具体到实现方法又会分很多种,本文仅仅是提供了一种思路,希望能对你有帮助。以下是实现的源代码,仅供您的参考。
procedure Tgcdzsys_grjs.FormCreate(Sender: TObject);
var
   Reg:Tregistry;    //自定义注册表变量
   NowDate,FirstDate:TDateTime;//自定义时间变量
   KeyName,TempCode,TempName,TempStr:string; //自定义字符串变量
   Same:Integer; //自定义整数变量
   NumberOfDays:Real;
begin
   //SB.Panels[0].Text:='' 工程地质勘察应用系统'';
   //SB.Panels[1].Text:=''   Email: Grjs_2001@163.com  或  Grjs_2001@sohu.com'';
   NoRegistry:=true;
   NowDate:=date; //取得运行时系统日期
   try
   //创建注册表,有该键则读取,无则创建
    Reg:=Tregistry.Create ;
    Reg.RootKey :=Hkey_local_machine;
    KeyName:=''Software\\grjs\\Example'';
    if Reg.OpenKey(KeyName,true) then
      begin
        TempName:=Reg.ReadString(''UsrName'');
        TempCode:=Reg.ReadString(''Passwd'');
        //读取用户名,注册号
        try
         FirstDate:=Reg.ReadDate(''Date'');
         //非第一次则读入第一次运行时间
        except
         FirstDate:=NowDate;
         Reg.WriteDate(''Date'',NowDate);
         //若为第一次运行,则写入系统日期
        end;
      end;
      Reg.CloseKey;
   finally
   Reg.Free;
   end;
   TempStr:=Encrypt(TempName);
   //通过自定义函数Encrypt()来获取密码
   Same:=CompareText(TempStr,TempCode);
   //比较密码
   if TempName<>'''' then
   if Same=0 then
   NoRegistry:=false;
   //验证密码,通过NoRegistry为false
   if NoRegistry then
     begin //若未注册...
      NumberOfDays:=Nowdate-FirstDate;
      SpareDays:=Round(10-NumberOfDays);
      ShowMessage(''你已经剩下''+FloatToStr(SpareDays)+''天的使用时间了!请尽快注册!'');
      if((NumberOfDays>10) or (NumberOfDays<-1)) then
        begin
         ShowMessage(''程序未注册超过试用期或更改系统时间,将终止运行!'');
         Application.Terminate;//超过10天,则禁止运行
        end;
     end;
end;


function Tgcdzsys_grjs.Encrypt(TempStr:string):string;
var
   Str1:String;
   i,j:Integer;
begin
   Str1:='''';
   for i:=1 to Length(TempStr) do
    begin       //密码匹配方式
      j:=(i*i*i*i mod (i+30))+(i*i mod (i+20))+i*3+1;
      Str1:=Str1+chr(ord(TempStr[i])+j);
    end;
   Result:=Str1;
end;

procedure Tgcdzsys_grjs.DBBhelphgrjsClick(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<>0) then
           ShowMessage(''注册号码不对,注册未成功!'')
         else
         begin
        //密码匹配时做:把用户名、密码写入注册表
         Try
          Reg:=Tregistry.Create ;          //激发注册表
          Reg.RootKey :=hkey_local_machine;//注册表路径
          KeyName:=''Software\\grjs\\Example'';//创建新的注册文件
         if Reg.OpenKey(KeyName,true) then
           begin
            Reg.WriteString(''Passwd'',InptCode); //注册密码
            Reg.WriteString(''UsrName'',InptName);//注册用户名
           end;
         Reg.CloseKey ;                        //关闭
         finally
         Reg.Free;                           //释放注册表
         end;
        NoRegistry:=false;//可修改注册后的界面
        end;
        end;
     end;
end;

(佚名)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/200907/7369.html]
本文出处:网络博客 作者:佚名
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容