系统滴答时间

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

实例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)并保存为运行截至时间,接下来定时获取系统滴答并判断是否超过了运行截至时间,超过了则触发停止服务的操作。

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

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

你可能感兴趣的:(编程杂记)