hur.cn - 华软网

 热门搜索

如何控制系统使用期限?

  作者:未知    来源:网络    更新时间:2018/7/4
单机版程序(没有数据库)如何限制用户使用日期?如:使用期限为3个月,不能因为该系统时间而影响使用期限。大家谁有好的思路和方法,谢谢!
------华软网友回答------
不太清楚,要不限定使用次数吧
------华软网友回复------
简单的方法:
创建一个记事本或是其他文件来存放第一次使用的时间。
然后再比较系统时间和记事本里的时间。
profilestring()
setprofilestring()
------华软网友回复------
如果用户更改了系统时间呢?这样就不可以了?
如何限制使用次数呢?
------华软网友回复------
在程序首次运行登录的时候在注册表增加一个键值写入一个日期(当时的系统日期)。
接下来判断注册表中是否有这个日期以确定程序是不是首次运行
如果这个日期的话,
在程序再次运行登陆的时候 取出系统的当前日期 - 取出的注册表中的日期 > 3个月
程序超期失效
否则程序继续运行

但是这样有一点, 用户要是修改了往前修改了系统日期就不行了!
======================================================================
我以前用的小程序就这么延长使用期过!
------华软网友回复------
在注册表中创建键值也可以,如果用户禁止了对注册表的修改呢?因为我之前遇到过有些用户为了系统的稳定考虑,禁止外部软件对注册表的修改
------华软网友回复------
很简单的一个方法
初次运行时记录当时的日期时间并加密存到INI或其他什么文件里。
以后每次程序启动时读取文件中的日期时间并与当前系统时间比较
若系统日期时间>已存储日期时间,则判断是否到期,并更新保存的时间信息,
若系统时间<已存储时间,非法修改日期,自动退出。



------华软网友回复------
To:leio((郁闷中...))
    你有现成的例子吗,给偶,谢谢
------华软网友回复------
将以下代码放入Application的open中。存放的日期时间未做加密处理。

这段代码问题就在于如果用户手工删除了test.ini,在代码中就会认为是第一次使用。所以,若想更安全,可以考虑在程序中将日期信息以多种方式写入多个文件中或注册表里,并进行一致性检查判断。

//===================================================
//Create by Leio 2005/09/29
//限制使用期限
//如果没有test.ini文件则认为是第一次使用.
integer li_filenum
if not fileexists('test.ini') then
//第一次使用
messagebox('欢迎','欢迎使用本系统,您可以试用90天,试用期将在'+&
  string(relativedate(today(),90))+'到期!')
li_filenum = FileOpen("test.ini",StreamMode!,Write!,LockWrite!, Replace!)
fileclose(li_filenum)
setprofilestring('test.ini','register','firstdate',string(today(),'yyyy/mm/dd'))
setprofilestring('test.ini','register','firsttime',string(now(),'hh:mm:ss'))
setprofilestring('test.ini','register','usedate',string(today(),'yyyy/mm/dd'))
setprofilestring('test.ini','register','usetime',string(now(),'hh:mm:ss'))
open(w_main)
return
end if
datetime ldt_now,ldt_savevalue,ldt_first
//系统当前时间
ldt_now = datetime(today(),now()) 
//第一次使用的时间
ldt_first = datetime(date(profilestring('test.ini','register','firstdate','2000/01/01')),&
time(profilestring('test.ini','register','firsttime','00:00:00')))
//上一次使用的时间
ldt_savevalue = datetime(date(profilestring('test.ini','register','usedate','2000/01/01')),&
time(profilestring('test.ini','register','usetime','00:00:00')))
long ll_second,ll_days
//用当前时间与上一次启动的时间进行比较
ll_days = daysafter(date(ldt_savevalue),date(ldt_now))

if ll_days = 0 then//上次启动是同一天
ll_second = secondsafter(time(ldt_savevalue),time(ldt_now))
elseif ll_days > 1 then//上次启动是多天以前
ll_second = 9999
elseif ll_days < 0 then//上次启动日期大于当前日期,日期被修改了
ll_second = -999
else
ll_second = -999
end if

if ll_second < 0 then
messagebox('提示','系统时间发生异常,按确定退出系统!',StopSign!)
   //系统日期时间被改回较早的日期时间
halt close
return
else
//判断是否到期
ll_days = daysafter(date(ldt_first),date(ldt_now))
if ll_days > 90 then
messagebox('提示','使用期限已到!')
halt close
return
end if
end if
//更新test.ini为当前时间
setprofilestring('test.ini','register','usedate',string(today(),'yyyy/mm/dd'))
setprofilestring('test.ini','register','usetime',string(now(),'hh:mm:ss'))
open(w_main)
//=================================================      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。