linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘建议留言网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > 开发语言 > Delphi >
栏目导栏
  php
  JSP
  ASP
  asp.net
  JAVA
  c/c++/c#
  perl
  JavaScript
  Basic
  Delphi
资料搜索
热门文章
·HexToStr函数和StrToHex函数
·Delphi中的进制转换
·delphi轻松设置无边框透明窗体
·DELPHI组件安装全攻略
·delphi第三方控件安装(Ehlib)
·delphi动态创建控件
·开发工具比较Visual C++ VS De
·delphi完整身份证效验程序实例
·如何判断文本文件的编码格式
·深入研究Variant数组
·delphi中的Format函数详解
·用delphi编写网络游戏的外挂
·Delphi技巧-用户自定义数据类型
·delphi编程获取打印机的打印任
·delphi设置控件透明
最新文章
·在应用程序中跟踪MOUSE的坐标
·压缩和修复MS Access 2000文件
·DELPHI 6.0 动画制做
·怎样在Delphi中调用LastError信
·怎样得到主域服务器名称
·怎样利用递归实现删除某一目录
·读出主键下所有项
·如何制作照片底片效果的图像(
·获得Modem的状态
·WebBrowser屏幕滚动的实现,设
·有关字符串处理的小技巧
·Delphi建立键盘鼠标动作纪录与
·Delphi中布尔类型辨析
·DELPHI程序注册码设计
·图形的不规则的Copy
Google
 
DELPHI程序注册码设计
[ 作者:  加入时间:2007-12-13 12:51:16  来自:Linux联盟收集整理 ]
当你辛辛苦苦用DELPHI做好了一个你认为十分不错的程序,你是否想把它发布出去成为共享软件呢? 做为一个共享软件,注册码肯定是少不了的,你可以通过判断程序是否注册来进行功能,时间或一些其它限制.现在就介绍一种简单的注册码制造方法.思路是这样的:程序运行时先检测注册表,如果找到注册项,则表明已经注册,如果没有找到注册项,则提示要求注册.LWJLinux联盟
LWJLinux联盟
<注册例程>LWJLinux联盟
LWJLinux联盟
在DELPHI下新建一工程,放置Edit1,Edit2,Label1,Label2,Button1组件.具体代码如下:LWJLinux联盟
LWJLinux联盟
unit Unit1;LWJLinux联盟
LWJLinux联盟
interfaceLWJLinux联盟
LWJLinux联盟
usesLWJLinux联盟
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,LWJLinux联盟
StdCtrls,Registry;//在此加上Registry以便调用注册表.LWJLinux联盟
LWJLinux联盟
typeLWJLinux联盟
TForm1 = class(Tform)LWJLinux联盟
Button1: Tbutton;LWJLinux联盟
Edit1: Tedit;LWJLinux联盟
Edit2: Tedit;LWJLinux联盟
Label1: Tlabel;LWJLinux联盟
Label2: Tlabel;LWJLinux联盟
procedure Button1Click(Sender: Tobject);LWJLinux联盟
procedure FormCreate(Sender: Tobject);LWJLinux联盟
privateLWJLinux联盟
Function Check():Boolean;LWJLinux联盟
Procedure CheckReg();LWJLinux联盟
Procedure CreateReg();LWJLinux联盟
{ Private declarations }LWJLinux联盟
publicLWJLinux联盟
{ Public declarations }LWJLinux联盟
end;LWJLinux联盟
LWJLinux联盟
varLWJLinux联盟
Form1: TForm1;LWJLinux联盟
Pname:string; //全局变量,存放用户名和注册码.LWJLinux联盟
Ppass:integer;LWJLinux联盟
LWJLinux联盟
implementationLWJLinux联盟
LWJLinux联盟
{$R *.DFM}LWJLinux联盟
LWJLinux联盟
Procedure TForm1.CreateReg();//创建用户信息.LWJLinux联盟
var Rego:Tregistry;LWJLinux联盟
beginLWJLinux联盟
Rego:=Tregistry.Create;LWJLinux联盟
Rego.RootKey:=HKEY_USERS;LWJLinux联盟
rego.OpenKey('.DEFAULT\Software\AngelSoft\Demo',True);//键名为AngelSoft\Demo,可自行修改.LWJLinux联盟
Rego.WriteString('Name',Pname);//写入用户名.LWJLinux联盟
Rego.WriteInteger('Pass',Ppass);//写入注册码.LWJLinux联盟
Rego.Free;LWJLinux联盟
ShowMessage('程序已经注册,谢谢!');LWJLinux联盟
CheckReg; //刷新.LWJLinux联盟
end;LWJLinux联盟
LWJLinux联盟
Procedure TForm1.CheckReg();//检查程序是否在注册表中注册.LWJLinux联盟
var Rego:Tregistry;LWJLinux联盟
beginLWJLinux联盟
Rego:=Tregistry.Create;LWJLinux联盟
Rego.RootKey:=HKEY_USERS;LWJLinux联盟
IF Rego.OpenKey('.DEFAULT\Software\AngelSoft\Demo',False) thenLWJLinux联盟
beginLWJLinux联盟
Form1.Caption:='软件已经注册';LWJLinux联盟
Button1.Enabled:=false;LWJLinux联盟
Label1.Caption:=rego.ReadString('Name');//读用户名.LWJLinux联盟
Label2.Caption:=IntToStr(Rego.ReadInteger('Pass')); //读注册码.LWJLinux联盟
rego.Free;LWJLinux联盟
endLWJLinux联盟
else Form1.Caption:='软件未注册,请注册';LWJLinux联盟
end;LWJLinux联盟
LWJLinux联盟
Function TForm1.Check():Boolean;//检查注册码是否正确.LWJLinux联盟
varLWJLinux联盟
Temp:pchar;LWJLinux联盟
Name:string;LWJLinux联盟
c:char;LWJLinux联盟
I,Long,Pass:integer;LWJLinux联盟
beginLWJLinux联盟
Pass:=0;LWJLinux联盟
Name:=edit1.Text;LWJLinux联盟
long:=length(Name);LWJLinux联盟
LWJLinux联盟
for I:=1 to Long doLWJLinux联盟
beginLWJLinux联盟
temp:=pchar(copy(Name,I,1));LWJLinux联盟
c:=temp^;LWJLinux联盟
Pass:=Pass+ord(c); //将用户名每个字符转换为ASCII码后相加.LWJLinux联盟
end;LWJLinux联盟
if StrToInt(Edit2.Text)=pass thenLWJLinux联盟
beginLWJLinux联盟
Result:=True;LWJLinux联盟
Pname:=Name;LWJLinux联盟
Ppass:=Pass;LWJLinux联盟
endLWJLinux联盟
else Result:=False;LWJLinux联盟
end;LWJLinux联盟
LWJLinux联盟
procedure TForm1.Button1Click(Sender: Tobject);LWJLinux联盟
beginLWJLinux联盟
if Check then CreateRegLWJLinux联盟
else ShowMessage('注册码不正确,无法注册');LWJLinux联盟
end;LWJLinux联盟
LWJLinux联盟
procedure TForm1.FormCreate(Sender: Tobject);LWJLinux联盟
beginLWJLinux联盟
CheckReg;LWJLinux联盟
end;LWJLinux联盟
LWJLinux联盟
end.LWJLinux联盟
LWJLinux联盟
LWJLinux联盟
<注册器>LWJLinux联盟
LWJLinux联盟
在DELPHI下新建一工程,放置Edit1,Edit2,Button1组件.具体代码如下:LWJLinux联盟
LWJLinux联盟
unit Unit1;LWJLinux联盟
LWJLinux联盟
interfaceLWJLinux联盟
LWJLinux联盟
usesLWJLinux联盟
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,LWJLinux联盟
StdCtrls;LWJLinux联盟
LWJLinux联盟
typeLWJLinux联盟
TForm1 = class(Tform)LWJLinux联盟
Button1: Tbutton;LWJLinux联盟
Edit1: Tedit;LWJLinux联盟
Edit2: Tedit;LWJLinux联盟
procedure Button1Click(Sender: Tobject);LWJLinux联盟
privateLWJLinux联盟
{ Private declarations }LWJLinux联盟
publicLWJLinux联盟
{ Public declarations }LWJLinux联盟
end;LWJLinux联盟
LWJLinux联盟
varLWJLinux联盟
Form1: TForm1;LWJLinux联盟
LWJLinux联盟
implementationLWJLinux联盟
LWJLinux联盟
{$R *.DFM}LWJLinux联盟
LWJLinux联盟
procedure TForm1.Button1Click(Sender: Tobject);LWJLinux联盟
varLWJLinux联盟
Temp:pchar;LWJLinux联盟
Name:string;LWJLinux联盟
c:char;LWJLinux联盟
I,Long,Pass:integer;LWJLinux联盟
beginLWJLinux联盟
Pass:=0;LWJLinux联盟
Name:=edit1.Text;LWJLinux联盟
long:=length(Name);LWJLinux联盟
LWJLinux联盟
for I:=1 to Long doLWJLinux联盟
beginLWJLinux联盟
temp:=pchar(copy(Name,I,1));LWJLinux联盟
c:=temp^;LWJLinux联盟
Pass:=Pass+ord(c);LWJLinux联盟
end;LWJLinux联盟
edit2.text:=IntToStr(pass);LWJLinux联盟
end;LWJLinux联盟
LWJLinux联盟
end.LWJLinux联盟
LWJLinux联盟
    从<注册器>中取得注册码,便可在<注册例程>中进行注册.原理是使用ORD函数取得用户名每单个字符的ASCII码值,并进行相加得到注册码.LWJLinux联盟
当然,这十分容易并破解,你可以用XOR进行异或操作,或者倒取反值...具体的要看你怎么实现了.总之,本文章只抛砖引玉罢了.LWJLinux联盟
Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·在DELPHI中利用API实现网格内组件的嵌入  (2007-12-13 12:47:17)
 ·用Delphi打造图形界面的Ping程序  (2007-12-03 14:55:11)
 ·Delphi中异常的处理  (2007-12-03 14:50:54)
 ·在Delphi中侦测剪贴板的变化  (2007-12-03 14:48:21)
 ·delphi中的快捷键大收集  (2007-12-03 14:44:45)
 ·如何为Delphi程序添加事件和事件处理器  (2007-12-03 14:44:11)
 ·DELPHI中线程的初步探索  (2007-12-03 14:43:37)
 ·delphi端口扫描  (2007-12-03 14:39:06)
 ·DELPHI 中的规则表达式  (2007-12-03 14:37:59)
 ·面向对象编程与Delphi技术浅入讨论  (2007-12-03 14:34:41)