当前位置:首页 > 网络编程 > 软件语言 > DELPHI > DELPHI程序注册码设计

DELPHI程序注册码设计

点击次数:59 次 发布日期:2008-11-09 08:38:38 作者:源代码网
源代码网推荐
广告载入中
当你辛辛苦苦用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
软件开发网 www.mscto.com

源代码网推荐 { 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进行异或操作,或者倒取反值...具体的要看你怎么实现了.总之,本文章只抛砖引玉罢了.


源代码网推荐

源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华