• <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下調試通過。

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

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 妻子5免费完整高清电视| 最近中文字幕免费mv视频8| 四虎影视在线永久免费看黄| 亚洲综合小说另类图片动图| 久久这里只有精品国产免费10| 亚洲精品中文字幕麻豆| 88av免费观看入口在线| 免费黄色毛片视频| 亚洲欧美日韩中文字幕在线一区| 一个人看www免费高清字幕| 777爽死你无码免费看一二区| 亚洲电影国产一区| 免费国产高清毛不卡片基地| 99精品热线在线观看免费视频| 亚洲成人动漫在线| 青娱乐免费视频在线观看| 亚洲日韩AV无码一区二区三区人| 日本无吗免费一二区| 一级女性全黄生活片免费看| 亚洲国产精品无码专区影院| 国产亚洲福利一区二区免费看| 亚洲国产精品无码久久久久久曰| 亚洲国产成人久久精品app| 三级毛片在线免费观看| 哒哒哒免费视频观看在线www | 无人视频在线观看免费播放影院 | 日韩免费观看的一级毛片| 337P日本欧洲亚洲大胆艺术图| 999在线视频精品免费播放观看| 久久亚洲国产成人影院| 国内精品免费麻豆网站91麻豆| 亚洲日韩一区精品射精| 亚洲第一区精品观看| 无码人妻一区二区三区免费n鬼沢 无码人妻一区二区三区免费看 | 成人免费777777| 亚洲色偷偷偷网站色偷一区| 国产成人A在线观看视频免费| 污污的视频在线免费观看| 婷婷久久久亚洲欧洲日产国码AV| 91嫩草国产在线观看免费| 一区二区三区在线免费|