有DELPHI怎么编一个试用版的程序啊!!(100分)

  • 主题发起人 主题发起人 傻子
  • 开始时间 开始时间

傻子

Unregistered / Unconfirmed
GUEST, unregistred user!
就是软件的试用期一到,就不能再运行此程序。。。。
在线等待..
 
将一个记录运行次数的数值保存到注册表或ini文件中(要加密),刚运行时读出来,与你设定的最多运行次数比较,如大于最多运行次数,则退出程序。原理是这样。
 
给个源代码你吧:
procedure TSplashForm.FormCreate(Sender: TObject);
const
RegKey1='Software/ReaExp/';
RegKey2='day';
RegKey3='Count';
RegKey4='Switch';
LK='12256';
WINBUF = 144;
var
RegFile:TRegIniFile;
iCount: Integer;
sStr: String;
begin
{
RegFile:=TRegIniFile.Create(RegKey);
try
Label4.Caption:=RegFile.ReadString('房地产开发管理系统/','UserName','未定义的用户');
Label5.Caption:=RegFile.ReadString('房地产开发管理系统/','UserOrganization','未定义的组织');
finally
RegFile.Free;
end;
}
try
Image2.Picture.LoadFromFile('Splash.bmp');
except
MessageBox(handle,PChar('载入图象文件Splash.bmp失败!'),szProgramTitle,MB_OK+MB_ICONWARNING);
end;

{$I 'CaseCompi.pas'}
{$ifdef release}
Label2.Caption:= VersionNo;
{$else
}
RegFile:=TRegIniFile.Create(RegKey1);
try
if RegFile.KeyExists(RegKey2) then
begin
sStr:= (RegFile.ReadString(RegKey2, RegKey3, cryptStr('31',0)));
//sStr:= (RegFile.ReadString(RegKey2, RegKey3, EncryptStr('31')));
//MessageBox(handle,PChar('密串1是:'+sStr),szProgramTitle,MB_OK+MB_ICONWARNING);
if sStr<>'' then
sStr:=Trim(cryptStr(sStr, 1));
//MessageBox(handle,PChar('明串1是:'+sStr),szProgramTitle,MB_OK+MB_ICONWARNING);
try
if StrToInt(sStr)>30 then
begin
MessageBox(0,PChar(hints),szProgramTitle,MB_OK+MB_ICONHAND);
Halt;
//Application.Terminate;
end else
begin
sStr:=RegFile.ReadString(RegKey2, RegKey3, CryptStr('31', 0));
//MessageBox(handle,PChar('密串2是:'+sStr),szProgramTitle,MB_OK+MB_ICONWARNING);
sStr:=Trim(cryptStr(sStr, 1));
sStr:=stringreplace(sStr,' ','',[rfreplaceall]);
MessageBox(handle,PChar('允许使用 30 次,第 '+sStr+' 次使用。'),szProgramTitle,MB_OK+MB_ICONINFORMATION);
iCount:=StrToInt(sStr);
Inc(iCount, 1);
sStr:=cryptStr(IntToStr(iCount), 0);
RegFile.WriteString(RegKey2, RegKey3, sStr);
end;
except
MessageBox(handle,PChar(hints),szProgramTitle,MB_OK+MB_ICONHAND);
if RegFile<>nil then
RegFile.Free;
Halt;
//Application.Terminate;
end;
end else
begin
RegFile.WriteString(RegKey2, RegKey3, cryptStr('2', 0));
MessageBox(handle,PChar('允许使用 30 次,第 '+'1'+' 次使用。'),szProgramTitle,MB_OK+MB_ICONINFORMATION);
{
MessageBox(handle,PChar(hints),szProgramTitle,MB_OK+MB_ICONINFORMATION);
if RegFile<>nil then
RegFile.Free;
Halt;
}
end;
finally
if RegFile<>nil then
RegFile.Free;
end;
Label2.Caption:= VersionNo;
{$endif}
end;
 
CryptStr()是加解密函数,用异或来加解密。
 

请问,有没有不用外部文件,直接在可执行文件中加密的方法?
 
在标题栏加上“试用版”字样
 
你可先限制一些功能,然後在注冊表裡寫一個時間值,每次開啟都與系統時間相比較,如果超過了時間就禁止使用;
 
有很多工具的
比如Turbopower就有一款
增加序列号,并且规定了使用次数和使用时间
很强的
www.playicq.com有下
 
唉,试用!
软件做起来困难,盗起来容易啊。
 
后退
顶部