CloseMaxScript6 对脚本做时间控制
客户希望对脚本进行时间控制
需要在最低的成本下实现如下场景:
- 试用,给用户3天试用
- 在硬件绑定的情况下控制期限,比如月卡、年卡等等
方案1:
在前置动作中,启动时判断注册表或文件是否存在,
不存在则写入开始时间,存在则判断当前时间和开始时间差,大于多少天则返回false
缺点:
- 系统文件可以被控制 (无法改进)
- 系统时间可以被修改 (可通过网络时间获取)
方案2(推荐):
在前置动作中,硬写入可使用的时间段,硬要求联网,适合月激活、年激活等场景
缺点:
- 需要联网
- 需要按周期发布(但也是最节省成本的方案了)
此方案配合硬件绑定,按周期为用户更换脚本
fn getNetworkTime =
(
local netTime = ""
try
(
local request = (dotnetClass "System.Net.WebRequest").Create "http://www.baidu.com"
request.Timeout = 2000
local response = request.GetResponse()
local dateStr = response.Headers.Get "date"
response.Close()
netTime = dateStr
)
catch
(
print "获取网络时间失败,请检查网络连接。"
--赋一个早一点时间
cult = (dotNetClass "System.Globalization.CultureInfo").InvariantCulture
netTime = (dotNetObject "System.DateTime" 2000 01 01).ToString "ddd, dd MMM yyyy HH:mm:ss 'GMT'" cult
)
return netTime
)
fn test =
(
cult = (dotNetClass "System.Globalization.CultureInfo").InvariantCulture
--获取当前网络时间
netNowStr = getNetworkTime()
netNow = (dotnetClass "System.DateTime").ParseExact netNowStr "ddd, dd MMM yyyy HH:mm:ss 'GMT'" cult
netTime = (netNow.ToString "yyyyMMdd") as integer
--修改这个,写死过期时间
beginDate = 20250101
endTime = 20270101
--判断网络时间是否在有效范围内
if netTime < beginDate do
(
format "错误:网络时间(%)小于开始时间(%) \n" netTime beginDate
return false
)
if endTime < netTime do
(
format "过期:结束时间(%)小于当前网络时间(%) \n" endTime netTime
return false
)
print "正常使用"
return true
)
test()
--下面不要编写其他代码
浙公网安备 33010602011771号