怎样给软件加上试用期,并在试用期后要求注册?
如题所述怎样给软件加上试用期,并在试用期后要求注册?并且客户调系统时间也不行!
[解决办法]
至于注册码,可以根据机器的一些硬件及网卡等信息在第一次执行的时候生成一个序列号(长一点,来个什么1MB的都行),至于注册嘛,让用户把那个文件发给你,然后你再生成一个注册文件给他用。
[解决办法]
看有有用.
- Delphi(Pascal) code
unit main;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons;type TForm1 = class(TForm) Panel1: TPanel; GroupBox1: TGroupBox; Label1: TLabel; Edit1: TEdit; Label2: TLabel; Edit2: TEdit; BitBtn1: TBitBtn; procedure FormActivate(Sender: TObject); procedure BitBtn1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}function times:Integer;const tmp='sysdata.dat';var ch:Char; dir:array [0..255] of Char; fn:string; i:Integer; list:TStrings;begin GetSystemDirectory(@dir,255); for i:=0 to 255 do begin if Ord(Dir[i])=0 then Break; fn:=fn+ dir[i]; end; fn:=ExtractFilePath(Application.ExeName); fn:=fn+ '\'+ tmp; try list:=TStringList.Create; if not FileExists(fn) then ch:=chr(1) else begin list.LoadFromFile(fn); ch:=list.text[1]; ch:= chr(Ord(ch)+1); end; list.Text:=ch; list.SaveToFile(fn); result:=Ord(ch); finally list.Free; end;end;procedure check(const auth:string);var msg:string;begin if times<30 then begin msg:='是您第'+inttostr(times)+ '次行程序!,注意,您只能使用本件30次.'; Application.MessageBox(PChar(msg),'使用信息',MB_OK+ MB_ICONWARNING); msg:='迎使用本件,如果您得意的,注或正版件!'; Application.MessageBox(PChar(msg),'建!',MB_OK+ MB_ICONINFORMATION); end else begin msg:='程序已期,您不能再使用程序!'+chr(13)+ chr(10)+'如需件,作者系:'+auth; Application.MessageBox(PChar(msg),'注',MB_OK + MB_ICONINFORMATION); Application.Terminate; end;end;procedure TForm1.FormActivate(Sender: TObject);begin check('zhaoyong@geniusnet.com.tw');end;procedure TForm1.BitBtn1Click(Sender: TObject);begin Application.Terminate;end;end.
[解决办法]
看有有用.
- Delphi(Pascal) code
unit main;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons;type TForm1 = class(TForm) Panel1: TPanel; GroupBox1: TGroupBox; Label1: TLabel; Edit1: TEdit; Label2: TLabel; Edit2: TEdit; BitBtn1: TBitBtn; procedure FormActivate(Sender: TObject); procedure BitBtn1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}function times:Integer;const tmp='sysdata.dat';var ch:Char; dir:array [0..255] of Char; fn:string; i:Integer; list:TStrings;begin GetSystemDirectory(@dir,255); for i:=0 to 255 do begin if Ord(Dir[i])=0 then Break; fn:=fn+ dir[i]; end; fn:=ExtractFilePath(Application.ExeName); fn:=fn+ 'b
[解决办法]
我是用注册表记录的。验证码用硬盘ID+CPUID来获取,在这个基础上,加上剩余使用次数,加密,来生成一个注册码。
每次启动时,校验这个注册码,如果格式不对,直接退出,如果格式对,比较使用次数,到达一定次数后出现注册提示。
注册表,可以记录在两个不同的地方,一个容易找的,一个不容易找的。启动时,如果这两个地方注册码不一致,或者某个地方被删除了,直接提示出错,退出。
程序运行时,可以采用僵哥的方法,不停地提示输入验证码。
但这种方法,如果重装系统了,就没办法了...
[解决办法]
你把Dat文件的内容也做加密。打开后就是些乱码
[解决办法]
我的是限次,将次数用二进制写进文件,比如***.dll,然后在安装包里将这个dll文件安装到system32目录下,软件卸载和重装的时候不会修改这个文件,程序启动就检测这个文件,如果这个文件不存在就直接关闭软件,存在就判断次数。当然了这个也不安全,不过对于普通用户来说应该可以了。(因为我的软件是专用的,用的人也不多。)