作者:Sunpursue()
原文地址:http://community.youkuaiyun.com/Expert/topic/4225/4225754.xml?temp=.4353754
以下的方法仅提供一种思路:
1.首次运行判断
安装后用户需要运行程序,进行判断是否是首次运行程序
需要存储一个变量 BlnIsFirstRun(该变量写在某地方初值为 true ,可以多写几个 )
如果是首次运行程序,
写入软件相关信息 如 SetupDate 安装日期( 代表首次运行日期 )同时获取系统的昨天(sYesterday)的时间记录下来
写入软件过期的日期 ExpairDate : 安装日期 + 使用期( 比如15 ) = 过期日期
如果不是是首次运行程序,
读取系统昨天的日期, 和 sYesterday 进行比较 判断时期是否连续(防止修改系统时间)
如果连续 采用读取的系统时间刷新 sYesterday 的值 ,使日期向前推进一天 ;
如果不连续连续,采用读取的 sYesterday 的值,使之自增一天,获得新的 sYesterday 值 进行回填 ,刷新 sYesterday 的值 ,使日期向前推进一天 ;
2.判断是否过期
读取 ExpairDate 的值 ,获取系统当天的值和所记录的 sYesterday 的值进行连续性比较 ,不连续,将 sYesterday 增加一天,认为是当天的日期值
然后和 ExpairDate 的值 进行判断;
3.程序每次启动进行判断,更新相关的信息;
4.注意:
其中几个关键的值如 BlnIsFirstRun , SetupDate ,sYesterday ,ExpairDate 需要多写几个地方,尽可能进行加密处理
过期日期判断时采用
CurrentDate >= ExpairDate
而不是
CurrentDate == ExpairDate(显然有漏洞)