六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

用DEPHI為應用軟件創建注冊機制

[摘要]如何保護自己的軟件不被非授權盜用的問題,始終困擾著每一個程序員。當前世界上保護軟件的方法有很多,主要是采用加密(如加軟件狗)方式或軟件注冊方式。使用軟件狗等加密方法,雖然其保護最有效,但對授權用戶的正常使用有一定的影響,而且軟件發放比較復雜,在實際運用中比較少被采用。而注冊登記方式則是當前最流行、...
如何保護自己的軟件不被非授權盜用的問題,始終困擾著每一個程序員。當前世界上保護軟件的方法有很多,主要是采用加密(如加軟件狗)方式或軟件注冊方式。使用軟件狗等加密方法,雖然其保護最有效,但對授權用戶的正常使用有一定的影響,而且軟件發放比較復雜,在實際運用中比較少被采用。而注冊登記方式則是當前最流行、運用最廣泛的方法,雖然有許多通用軟件其注冊碼可以很容易地被發燒友們所解,但對于獨立程序員為某特定應用設計的應用軟件而言,采用注冊機制顯得最經濟、最方便,而且在一定的范圍內非常有效。筆者在實際工作中,廣泛使用了軟件注冊方法,有效地維護了軟件的權益。
  DEPHI軟件的功能極為強大,深受程序員喜歡。用DEPHI開發的軟件,可以很方便地加入注冊機制。下面筆者就如何在DEPHI開發的軟件中加入注冊機制與朋友們交流心得。
  要實現軟件注冊機制,需解決以下幾個問題:1、如何加入注冊檢測,判斷軟件是否注冊;2、如何隱藏注冊碼,及是否注冊的標志;3、在軟件不注冊情況下,如何限制軟件的使用時間或次數;4、對正常用戶而言,不應造成使用不便。對于以上四個問題,如何隱藏注冊碼及是否注冊的標志是關鍵。在WINDOWS95中,WIN95本身及大多數的應用軟件都將其各種參數放入注冊表中,因而注冊表內的數據顯得極為龐大和復雜。如果將注冊標志隱藏在注冊表的某一角落中,想要找到它并理解它是極其困難的事。因此我們可以利用這一點,在注冊表的某個分支上設置一個從名稱上看毫無特殊意義的關鍵字,將自己軟件的注冊標志數據存放在這里。以下是整個注冊機制的流程框圖:



  從上圖可以看出,整個注冊機制主要由兩個部分組成:檢查和注冊。通過檢查標志值,得出軟件是否已注冊;若沒有注冊,則要看它允許使用的次數是否已達到;若可使用的次數已用完,則應提示用戶輸入注冊碼,進行注冊;只有用戶輸入的注冊碼正確時,才讓用戶繼續使用軟件,同時將標志置為已注冊,讓用戶永久性使用;否則允許使用的次數未達到,應將次數加一;若用戶注冊輸入的注冊碼錯誤或拒絕注冊,則直接關閉軟件,拒絕其繼續使用。當然,在軟件允許使用次數未達到時,也應通過菜單項為用戶提供機會進行注冊登記。以下是筆者在實際開發中,建立注冊機制的程序代碼及注釋。

假設軟件的主程序窗口為FORM1,則將該段代碼置放在FORM1.CREATE事件中。代碼如下:

procedure TForm1.form1create(Sender: TObject);
var
re_id:integer;
registerTemp : TRegistry;
inputstr,get_id:string;
dy,clickedok:boolean;
begin
 dy:=false; //軟件是否已到注冊期、及是否允許繼續使用的標志,當值為FALSE是為允許使用。
 registerTemp := TRegistry.Create; //準備使用注冊表
 with registerTemp do
 begin
   RootKey:=HKEY_LOCAL_MACHINE; //存放在此根下
   if OpenKey('Software\Microsoft\Windows\CurrentVersion\Mark',True) then
    // 建一目錄,存放標志值。當然也可以存放在已存在的目錄下。怎么樣,很難發現吧?
    begin
     if valueexists('gc_id') then begin //用gc_id的值作為標志,首先判斷其存在否?
       re_id:=readinteger('gc_id');//讀出標志值
       if (re_id<>0) and (re_id<>100) then begin //若標志值為0,則說明已注冊。
              //若不為0且值不到100,說明雖未注冊,但允許使用的次數尚未達到。
        re_id:=re_id+5; //允許標志的最大值為100,每次加5,則最多只可用20次。
        Writeinteger('gc_id',re_id);//將更新后的標志值寫入注冊表中。
     end;
     if re_id=100 then dy:=true; //假如值已到100,則應注冊。
    end
   else Writeinteger('gc_id',5);//建立標志,并置初始標志值。
  end;
  if dy then begin //若dy值為TRUE,則應提示用戶輸入注冊碼,進行注冊。
    clickedok:=InputQuery('您使用的是非注冊軟件,請輸入注冊碼:',' ',inputstr);
    if clickedok then begin
      get_id:=inttostr(27593758*2);//注冊碼為55187516,當然可加入更雜的算法。
      if get_id=inputstr then begin
        Writeinteger('gc_id',0);//若輸入的注冊碼正確,則將標志值置為0,即已注冊。
        CloseKey;
        Free;
       end
      else begin //若輸入的注冊碼錯誤,應作出提示并拒絕讓其繼續使用
        application.messagebox('注冊碼錯誤!請與作者聯系!','警告框',mb_ok);
        CloseKey;
        Free;
        application.terminate; //中止程序運行,拒絕讓其繼續使用
       end;
      end
    else begin //若用戶不輸入注冊碼,也應作出提示并拒絕讓其繼續使用
      application.messagebox('請與作者聯系,使用注冊軟件!','警告框',mb_ok);
      CloseKey;
      Free;
      application.terminate;
     end;
  end;
 end;
end;

(注:通過菜單進行注冊的方法同本段提示用戶進行注冊的內容雷同,這里不提供代碼。)

  以上程序代碼已在DEPHI3.0/WIN95環境中運行通過,并在實際運用中得到驗證。對合法用戶而言,這樣的機制,只要其錄入注冊碼一次就可以,不增加其日常使用的負擔;而對非法用戶而言,除非他得到注冊碼或重裝WINDOWS95,否則超過使用次數后,將無法繼續使用。當然在實際應用中還有許多地方可以進一步加強反破解能力,歡迎朋友們提出批評和指導。

(福建 楊健珊)


主站蜘蛛池模板: 午夜国产高清精品一区免费 | 午夜一级精品免费毛片 | 天天色综合社区 | 热の综合热の国产热の潮小说 | 日韩中文字幕精品久久 | 深夜视频在线观看免费 | 青青久精品观看视频最新 | 日本欧美一区二区三区高清 | 午夜剧院免费 | 亚洲高清日韩精品第一区 | 青草草在线 | 亚洲国产日韩综合久久精品 | 色噜噜噜噜噜在线观看网站 | 我的秘密饭店 电视剧免费观看 | 日本中文字幕乱码免费 | 四虎影视在线影院4hutv | 日韩一区国产二区欧美三区 | 色综合久久六月婷婷中文字幕 | 色综合天天网 | 亚洲乱码一区二区三区国产精品 | 日韩福利视频高清免费看 | 日本又黄又硬又粗好爽视频免费 | 最近中文字幕无免费视频 | 一级美女黄色片 | 日韩一区二区三区在线观看 | 日韩精品视频免费观看 | 青青在线播放 | 午夜成人免费影院 | 欧美永久免费 | 日韩在线视频中文字幕 | 天堂黄色 | 日韩精品视频在线观看免费 | 全免费a级毛片免费看不卡 全黄一级片 | 日本国产免费一区不卡在线 | 天天看天天色 | 青草影院在线观看 | 色啦啦影院 | 殴美激情 | 亚洲区欧美中文字幕久久 | 日韩国产中文字幕 | 婷婷六月激情 |