• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

        Delphi程序的時限與加密辦法

        Delphi程序的時限與加密辦法

        更新時間:2022-05-05 文章作者:未知 信息來源:網絡 閱讀次數:

        文/宋爽

          本例中TRegistry是關鍵類,Delphi 4.0不能自行加入,需在uses部分手工加入“registry”,通過其方法“ReadString”和“WriteString”來讀出和寫入字符,亦可通過其方法“ReadDate”和“WriteDate”來讀出和寫入日期。

          程序第一次運行就寫入其運行時間,應用期限為30天,超過30天就不再運行。全局變量NoRegistry、SpareDays來分別判斷是否注冊和剩余期限,自定義函數Encrypt為用戶名到  
        密碼的變換函數。

          一、程序啟動時,通過搜索注冊表,判斷是否第一次運行和是否注冊,來確定程序是否運行。

          procedure TForm1.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 :=hkey_local_machine;

           KeyName:='Softwarejsjbxample';

           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=0 then

           NoRegistry:=false;

          //驗證密碼,通過NoRegistry為false

           if NoRegistry then

           begin //若未注冊...

          NumberOfDays:=Nowdate-FirstDate;

          SpareDays:=round(31-NumberOfDays);

          Label1.Caption :=FloatToStr(SpareDays);

          if((NumberOfDays>31) or (NumberOfDays<-1)) then

          begin

          showmessage('程序未注冊超過試用期或更改系統時間,將終止運行!');

          application.Terminate;//超過30天,則禁止運行

          end;

          end;

          end;

          二、注冊過程,其響應入口可放于"About"內。

          procedure TAbout.Button1Click(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:='Softwarejsjbxample';

          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;

          三、密碼的變換函數。此變換函數可由讀者自由發揮,在此,僅示一例而已。

          Function TForm1.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);

           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;

          此程序在Windows98,Delphi 4.0下調試通過。

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 亚洲国产高清国产拍精品| 麻豆亚洲av熟女国产一区二| 亚洲色偷偷偷综合网| 色se01短视频永久免费| 亚洲国产成人超福利久久精品 | 国产精品手机在线亚洲| 国产美女无遮挡免费视频网站| 小说专区亚洲春色校园| 亚洲国产免费综合| a毛片全部播放免费视频完整18| 亚洲色欲久久久综合网东京热| 在线观看免费黄色网址| 亚洲av无码一区二区三区乱子伦 | 无码国产精品一区二区免费式影视| 亚洲大香伊人蕉在人依线| 99在线视频免费观看视频| 亚洲综合国产成人丁香五月激情| 国产无遮挡又黄又爽免费视频| 麻豆一区二区三区蜜桃免费| 亚洲熟妇丰满多毛XXXX| 1000部禁片黄的免费看| 亚洲熟妇AV一区二区三区浪潮| 国产黄色片在线免费观看| 一级**爱片免费视频| 久久精品国产亚洲av麻豆小说| 24小时日本在线www免费的| 色欲色欲天天天www亚洲伊| 国产亚洲成归v人片在线观看 | 美女隐私免费视频看| 亚洲阿v天堂在线| 久九九精品免费视频| 色婷婷精品免费视频| 久久亚洲精品中文字幕无码| 波多野结衣在线免费观看| 国产精品亚洲lv粉色| 亚洲AV无码久久精品蜜桃| 成人毛片18女人毛片免费96| 国产日韩久久免费影院| 亚洲视频免费在线看| 四虎国产精品免费久久影院| 今天免费中文字幕视频|