扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
整个注册机制主要由两个部分组成:检查和注册。通过检查标志值,得出软件是否已注册;若没有注册,则要看它允许使用的次数是否已达到;若可使用的次数已用完,则应提示用户输入注册码,进行注册;只有用户输入的注册码正确时,才让用户继续使用软件,同时将标志置为已注册,让用户永久性使用;否则允许使用的次数未达到,应将次数加一;若用户注册输入的注册码错误或拒绝注册,则直接关闭软件,拒绝其继续使用。当然,在软件允许使用次数未达到时,也应通过菜单项为用户提供机会进行注册登记。以下是笔者在实际开发中,建立注册机制的程序代码及注释。
假设软件的主程序窗口为FORM1,则将该段代码置放在FORM1.CREATE事件中。代码如下:
procedure TForm1.form1create(Sender: TObject);
var
re_id:integer;
registerTemp : TR stry;
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$#@60;$#@62;0) and (re_id$#@60;$#@62;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,否则超过使用次数后,将无法继续使用。当然在实际应用中还有许多地方可以进一步加强反破解能力,欢迎朋友们提出批评和指导。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者