问题:
我目前计算第一次运行时间是采用的取系统时间计算的,但是这样用户一旦更改了系统时间,这个 第 一次运行时间就失效了
请问各位大侠,这种问题一般是怎么处理的?
我想了一下,1、是否有 更改系统时间的通知?2、有人说用::GetTickCount(),这种我没想出具体的方案。
求教,谢谢!
11 个解决方案
#1
第一种,获取网络时间,
第二种,将上次执行时间用文件记录下来,可以防止用户向前修改时间,至于防止用户向后修改时间,就不能保证了
第二种,将上次执行时间用文件记录下来,可以防止用户向前修改时间,至于防止用户向后修改时间,就不能保证了
#2
用个线程每隔一秒去取一下系统时间,然后比较下上一次取的时间,如果2个时间的误差超过可接受的范围(比如2秒,自己设置),那么就可以知道是不是被改过时间了,当然这需要在程序的执行期间才行
#3
用组策略设置不允许修改电脑时间。
#4
楼上大侠的意思是说这种程序修改系统时间后没有比较好的方案吗?
#5
Yes.Of cause.Why not.Certainly!
#6
起个定时器
遍历计划, 与系统时间比较,
如果(系统时间>下次执行时间)
则修改下次执行时间.
遍历计划, 与系统时间比较,
如果(系统时间>下次执行时间)
则修改下次执行时间.
#7
能不能 在 CMOS 中 找个 空 单元 写 上 设定 时间
#8
第一次获取系统时间,管他是对的还是错误的。但同时用 GetTickCount 获取开机后的毫秒数。下次直接 GetTickCount 获取该值,与上次获取的值进行对比。即可知道过去了多少毫秒,然后可以在系统时间的基础上直接加,就知道按照当时设置的时间开始到现在为止未修改的情况下应该是几点几分,这样期间修改也没影响。但如果后续 GetTickCount 的结果比上次要小,那么说明已经重启过了。
#9
各位大侠的意见对我都有启发,尤其SXJIAKE和zhao4zhong1,最后决定还是先不考虑这种情况,结贴。
#10
结合 获取硬件 或是 系统 的运行 时间长度
#11
系统时间更改,可以收到 WM_TIMECHANGE 消息。
#1
第一种,获取网络时间,
第二种,将上次执行时间用文件记录下来,可以防止用户向前修改时间,至于防止用户向后修改时间,就不能保证了
第二种,将上次执行时间用文件记录下来,可以防止用户向前修改时间,至于防止用户向后修改时间,就不能保证了
#2
用个线程每隔一秒去取一下系统时间,然后比较下上一次取的时间,如果2个时间的误差超过可接受的范围(比如2秒,自己设置),那么就可以知道是不是被改过时间了,当然这需要在程序的执行期间才行
#3
用组策略设置不允许修改电脑时间。
#4
用组策略设置不允许修改电脑时间。
楼上大侠的意思是说这种程序修改系统时间后没有比较好的方案吗?
#5
用组策略设置不允许修改电脑时间。
楼上大侠的意思是说这种程序修改系统时间后没有比较好的方案吗?
Yes.Of cause.Why not.Certainly!
#6
起个定时器
遍历计划, 与系统时间比较,
如果(系统时间>下次执行时间)
则修改下次执行时间.
遍历计划, 与系统时间比较,
如果(系统时间>下次执行时间)
则修改下次执行时间.
#7
能不能 在 CMOS 中 找个 空 单元 写 上 设定 时间
#8
第一次获取系统时间,管他是对的还是错误的。但同时用 GetTickCount 获取开机后的毫秒数。下次直接 GetTickCount 获取该值,与上次获取的值进行对比。即可知道过去了多少毫秒,然后可以在系统时间的基础上直接加,就知道按照当时设置的时间开始到现在为止未修改的情况下应该是几点几分,这样期间修改也没影响。但如果后续 GetTickCount 的结果比上次要小,那么说明已经重启过了。
#9
各位大侠的意见对我都有启发,尤其SXJIAKE和zhao4zhong1,最后决定还是先不考虑这种情况,结贴。
#10
结合 获取硬件 或是 系统 的运行 时间长度
#11
系统时间更改,可以收到 WM_TIMECHANGE 消息。