分享一个单机软件试用期计时思路

1.首次启动软件时,先获取自己软件写入的注册表项,如果已经存在了,再获取记录的时钟周期数,如果不存在的话,获取主机自cpu上电以来的时钟周期数,已纳秒为单位,然后把这个数保存到电脑自己的注册项里。
2.以后每次启动软件,都获取自cpu上电以来的时钟周期数,然后再去读取首次写入的那个数值。
3.两两相减,计算出的时间差就是软件再这台主机上存在的天数的纳秒值。
这样做及防止了更改系统时间,又防止了重装。
 
不过这个实在是依赖注册表了,注册表里的值被删了,那不就玩完了吖。还有,主板电池一泄电,那也完玩了。所以这个方法也不是很保险。
 
但如果软件一直不能联网,又不能借助其他设备,我也想不到其他方式了。能不能把值写入主机的硬件?或者写入windows系统,或者让用户无法修改注册表?这些不知可不可以深入研究一下。
 
获取时钟周期数可以用c++语言实现:
inline unsigned __int64 GetCycleCount()
{
__asm RDTSC
}
原文地址:https://www.cnblogs.com/HelloQLQ/p/15635575.html