online 请大家畅所欲言谈谈软件限制天数的做法!!!!up有分(300分)

  • 主题发起人 主题发起人 jin.hu
  • 开始时间 开始时间
unit CheckRegs;

interface

uses Windows, SysUtils, Registry;

{$IFDEF CHECK_REGS}
const
USE_DAYS = 30;
REGS_ROOT = 'CLSID/{30FD718A-EE87-45B0-8003-11338496D7E7}/ProgID';
REGS_KEY = 'ID';

function GetCanUseDays: Integer;
{$ENDIF}

implementation

{$IFDEF CHECK_REGS}
function GetCanUseDays: Integer;
var
Reg: TRegistry;
UseTime: TDateTime;
begin
Reg := TRegistry.Create;

try
try
Reg.RootKey := HKEY_CLASSES_ROOT;
Reg.OpenKey(REGS_ROOT, True);
if Reg.ValueExists(REGS_KEY) then
UseTime := Reg.ReadFloat(REGS_KEY)
else begin
UseTime := Now;
Reg.WriteFloat(REGS_KEY, UseTime);
end;

Result := USE_DAYS - Round(Now - UseTime);
if Result < 0 then
Result := 0;
except
Result := 0;
end;
finally
Reg.Free;
end;
end;
{$ENDIF}

end.
 
if GetCanUseDays <= 0 then
begin
Application.MessageBox(PChar('试用期超过'), '错误', MB_OK + MB_ICONERROR);

ReleaseMutex(hMutex);
//Application.Terminate;
Exit;
end;
 
除非这人的机器上没有更新的文件了,可以用搜索里面所有文件的时间的方法,找出最新的文件,把它当作最后的时间。
还可以搜索BIOS版本的时间。
还有,机器开机的总时间是可以记录的。
再加上运行次数的记录。
还有,如果机器连得上INTERNET,就可以从网络上找到正确的时间。

除非这台机器的时间永远都没有对的时候。
 
不要在注册上下很大功夫,只要进行一些加密处理.
 
到时间后写注册表或写一文件。然后判断他们。就是把时间回调也不能使用。
但是如果电脑全部重装就没有办法了。以前有文章说写在分区表中除了重新分区。
否则就是格式化也不能使用。上面的两个容易实现。下面的谁会把代码帖一下
 
感谢各位参与:
我想大家都会遇到这个问题。

to weiliu:
你有什么代码可以借鉴吗?
to 刀剑如梦
说说想法
to all:
是否有人做过这方面处理且实际效果比较成功的方法,能否share一下。

我想注册表和一个隐藏文件都不是很好的解决办法,因为可以通过某些软件跟踪出来。

看来也只有这些方法了。
I 'll finish this topic tommorrow,Thank to all。
 
怎么都从系统时间入手,系统时间用户可以自己乱改,一定得换个思路,别抱着系统时间不放。
 
sbzldlb的说法不妥,因为编程序是手段,最终目的就是钱,限制天数就是为了收钱,连
目都保不住,编出再好的软件,照样会饿死街头,所以未写程序之前,就应该把加密方法
想好,加壳不等于加密,多学点兵法。
 
超出10天,数据乱码
 
顶..............
 
可以通过网络获取用户信息
然后将信息输入你的数据库
 
如果能上网那就好了,但是不能保证客户机器能上网且在网上
 
多人接受答案了。
 
后退
顶部