一個簡單的DELPHI程式註冊碼設計 .

來源:互聯網
上載者:User

標籤:使用   os   io   for   cti   代碼   ar   時間   

當你辛辛苦苦用DELPHI做好了一個你認為十分不錯的程式,你是否想把它發布出去成為共用軟體呢  做為一個共用軟體,註冊碼肯定是少不了的,你可以通過判斷程式是否註冊來進行功能,時間或一些其它限制.現在就介紹一種簡單的註冊碼製造方法.思路是這樣的:程式運行時先檢測註冊表,如果找到註冊項,則表明已經註冊,如果沒有找到註冊項,則提示要求註冊. 
<註冊常式>
在DELPHI下建立一工程,放置Edit1,Edit2,Label1,Label2,Button1組件.具體代碼如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,Registry;//在此加上Registry以便調用註冊表.
type
TForm1 = class(Tform)
Button1: Tbutton;
Edit1: Tedit;
Edit2: Tedit;
Label1: Tlabel;
Label2: Tlabel;
procedure Button1Click(Sender: Tobject);
procedure FormCreate(Sender: Tobject);
private
Function Check():Boolean;
Procedure CheckReg();
Procedure CreateReg();
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Pname:string; //全域變數,存放使用者名稱和註冊碼.
Ppass:integer;
implementation
{$R *.DFM}
Procedure TForm1.CreateReg();//建立使用者資訊.
var Rego:Tregistry;
begin
Rego:=Tregistry.Create;
Rego.RootKey:=HKEY_USERS;
rego.OpenKey(‘.DEFAULTSoftwareAngelSoftDemo‘,True);//鍵名為AngelSoftDemo,可自行修改.
Rego.WriteString(‘Name‘,Pname);//寫入使用者名稱.
Rego.WriteInteger(‘Pass‘,Ppass);//寫入註冊碼.
Rego.Free;
ShowMessage(‘程式已經註冊,謝謝!‘);
CheckReg; //重新整理.
end;
Procedure TForm1.CheckReg();//檢查程式是否在註冊表中註冊.
var Rego:Tregistry;
begin
Rego:=Tregistry.Create;
Rego.RootKey:=HKEY_USERS;
IF Rego.OpenKey(‘.DEFAULTSoftwareAngelSoftDemo‘,False) then
begin
Form1.Caption:=‘軟體已經註冊‘;
Button1.Enabled:=false;
Label1.Caption:=rego.ReadString(‘Name‘);//讀使用者名稱.
Label2.Caption:=IntToStr(Rego.ReadInteger(‘Pass‘)); //讀註冊碼.
rego.Free;
end
else Form1.Caption:=‘軟體未註冊,請註冊‘;
end;
Function TForm1.Check():Boolean;//檢查註冊碼是否正確.
var
Temp:pchar;
Name:string;
c:char;
I,Long,Pass:integer;
begin
Pass:=0;
Name:=edit1.Text;
long:=length(Name);
for I:=1 to Long do
begin
temp:=pchar(copy(Name,I,1));
c:=temp^;
Pass:=Pass+ord(c); //將使用者名稱每個字元轉換為ASCII碼後相加.
end;
if StrToInt(Edit2.Text)=pass then
begin
Result:=True;
Pname:=Name;
Ppass:=Pass;
end
else Result:=False;
end;
procedure TForm1.Button1Click(Sender: Tobject);
begin
if Check then CreateReg
else ShowMessage(‘註冊碼不正確,無法註冊‘);
end;
procedure TForm1.FormCreate(Sender: Tobject);
begin
CheckReg;
end;
end.
<註冊器>
在DELPHI下建立一工程,放置Edit1,Edit2,Button1組件.具體代碼如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(Tform)
Button1: Tbutton;
Edit1: Tedit;
Edit2: Tedit;
procedure Button1Click(Sender: Tobject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: Tobject);
var
Temp:pchar;
Name:string;
c:char;
I,Long,Pass:integer;
begin
Pass:=0;
Name:=edit1.Text;
long:=length(Name);
for I:=1 to Long do
begin
temp:=pchar(copy(Name,I,1));
c:=temp^;
Pass:=Pass+ord(c);
end;
edit2.text:=IntToStr(pass);
end;
end.
  從<註冊器>中取得註冊碼,便可在<註冊常式>中進行註冊.原理是使用ORD函數取得使用者名稱每單個字元的ASCII碼值,並進行相加得到註冊碼.當然,這十分容易並破解,你可以用XOR進行異或操作,或者倒取反值...具體的要看你怎麼實現了.總之,本文章只拋磚引玉罷了.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.