系统滴答时间

今天以一个小实例谈谈操作系统时间的问题,只是简单谈一下时间,并不完整叙述整个操作系统的时间。

实例1.  试想你公司在做一款服务软件,一天你的boss 交代一个任务,对于没有购买许可证的客户可以连续运行软件3天,超过3天软件将自动退出。这个需求怎么做?

方案1: 在服务启动时读取系统时间加3天并保存为运行截至时间,接下来定时获取系统时间并判断是否超过了运行截至时间,超过了则触发停止服务的操作。

很多人第一个想到的就是这个方案,仔细想想。。。如果用户修改系统时间会发生什么事情???

例如:现在是2017年7月1日  用户在启动软件前将时间修改为 2018年7月1日 ,软件启动计算过期时间是 2018年7月4日,接着用户修改时间到2017年。于是,一个很简单的操作就将你的限制绕过去了... 

要解决这个问题,或许你会在每次获取完系统时间后判断当前时间与 运行截至时间的差,如果大于3天,则修正运行截至时间...

so, 有没有更简单的方法,当然,这就要说到系统滴答时间了,在windows上可以利用 GetTickCount64 函数获得系统的滴答,即:系统启动以来经过的毫秒,由于用户无法修改,所以可以利用系统滴答来实现上面的功能:

方案2:在服务启动时使用GetTickCount64读取系统的滴答(毫秒)加3天(3*24*60*1000)并保存为运行截至时间,接下来定时获取系统滴答并判断是否超过了运行截至时间,超过了则触发停止服务的操作。

--------------------------------------------------------------------------------------

当然,这个问题有很多种方法实现,这里主要是想说一下系统滴答和系统时间的区别,并且系统滴答的适用场景,如果您有其它的方法,欢迎评论区留言。。。

  • 11
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值