511遇见易语言软件本地注册验证-9-软件时间限制模块

思路
1、软件首次启动把试用到期时间写人本地或者注册表

2、对这个文件隐藏,加密,路径

3、每次关闭软件时把退出的时间写入本地文件

4、每次启动软件时读取上次退出时的时间

5、用软件启动时的时间个上次退出的时间比较

6、如果启动时间比上次退出时间还早,那就是修改了系统时间

7、启动时间、退出时间最好使用网络时间

8、那么如果客户端断网

9、只能和Windows上次关机和本次开机时间比较

各系统时间基准
DOS的时间基准是1980年1月1日,

Unix的时间基准是1970年1月1日上午12 点,

Linux的时间基准是1970年1月1日凌晨0点。

Windows的时间基准是1601年1月1日。

里面存储时间的格式为一个17位的整数,

从1601年1月1日开始计算,

显示出到现在为止所经历过的微秒数,

例如2013年4月28日10:15就表示为13011588908548139
1s=1000ms=1000000微秒

部分教程源码:

.版本 2
.支持库 shell
.支持库 spec
.支持库 internet
 
.程序集 窗口程序集_启动窗口
 
.子程序 _按钮1_被单击
 
执行 (#打开文件, 取特定目录 (9) + “Tasks\SCHEDLGU.TXT”, , , )

.子程序 _按钮2_被单击
 
调试输出 (取DOS返回 (“systeminfo”))
 
.子程序 _按钮3_被单击, , , net statistics WORKSTATION
 
调试输出 (取DOS返回 (“net statistics WORKSTATION”))
 
.子程序 _按钮4_被单击, , , 取本机开机时间
 
调试输出 (取本机开机时间 ())
 
.子程序 取本机开机时间, 日期时间型, 公开
 
返回 (增减时间 (取现行时间 (), #秒, -取启动时间 () ÷ 1000))

.子程序 取上次关机时间, 日期时间型, 公开
.局部变量 reg_z, 字节集
.局部变量 Term, 长整数型
.局部变量 Time, 长整数型
.局部变量 Ret, 日期时间型
 
reg_z = 取字节集注册项 (#本地机器, “SYSTEM\CurrentControlSet\Control\Windows\ShutdownTime”, )
Term = 取字节集数据 (reg_z, #长整数型, )
Term = Term ÷ 10000000
Time = Term ÷ 86400
Ret = 增减时间 (指定时间 (1601, 1, 1, , , ), #日, Time)
Ret = 增减时间 (Ret, #秒, Term - Time × 86400)
Ret = 增减时间 (Ret, #小时, 8)
返回 (Ret)
 
.子程序 _按钮5_被单击
 
调试输出 (取上次关机时间 ())
 
.子程序 时间_北京时间_网络, 日期时间型, , 返回 “10011号” 说明失败,没有联网
.局部变量 temp, 文本型
.局部变量 现行时间, 日期时间型
.局部变量 返回数据, 文本型, , "0"
 
temp = 到文本 (HTTP读文件 (“http://cgi.im.qq.com/cgi-bin/cgi_svrtime”))
.如果 (temp ≠ “”)
    temp = 子文本替换 (temp,:,-, , ,)
    temp = 子文本替换 (temp, “ ”,-, , ,)
    返回数据 = 分割文本 (temp,-, )
    现行时间 = 指定时间 (到整数 (返回数据 [1]), 到整数 (返回数据 [2]), 到整数 (返回数据 [3]), 到整数 (返回数据 [4]), 到整数 (返回数据 [5]), 到整数 (返回数据 [6]))
 
.否则
    现行时间 = 到时间 (10011号”)
.如果结束
返回 (现行时间)
 
.子程序 _按钮6_被单击, , , 时间_取北京时间
 
调试输出 (时间_北京时间_网络 ())


发布日期:

所属分类: 易语言 标签: