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

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

免责声明:文章转载自《分享一个单机软件试用期计时思路》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇sql server中调用c#写的dll里的方法将项目上传到gitee下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Unity3D实践系列01,创建项目

下载并安装Unity5软件客户端。 打开软件,注册Unity帐号,并用注册帐号登录。 点击"创建Project"按钮。 把项目命名为"My First Unity Project"。 点击左下方的"Assert packages"按钮,点击"select all"文字,点击"Done"按钮,点击"Create project"按钮。 创建完毕,多了一个与项...

iOS开发中使用[[UIApplication sharedApplication] openURL:]加载其它应用

iOS 应用程序之间(1) 在iOS开发中,经常需要调用其它App,如拨打电话、发送邮件等。UIApplication:openURL:方法是实现这一目的的最简单方法,该方法一般通过提供的url参数的模式来调用不同的App。   通过openURL方法可以调用如下应用:   调用谷歌地图(Google Maps) 调用邮件客户端(Apple Mail)...

Android手机里的垃圾文件和文件夹清理

SD卡中各个文件夹功能的最详尽分析SD卡用久了会有好多文件夹出现,大家看看都是干什么用~1、.android_secure  是官方app2sd的产物,删了之后装到sd卡中的软件就无法使用了。2、.Bluetooth  顾名思义,用蓝牙之后就会有这个。3、.mobo  顾名思义,Moboplayer的缓存文件。4、.QQ   顾名思义,QQ的缓存文件。5、...

iOS开发关于真机—App发布证书和调试证书配置

发布证书、真机调试证书、测试证书、推送证书详细过程 更重要的是让你彻底明白为什么要这样配置证书 一:发布证书 遵旨:哪个开发者的哪台电脑要发布哪个app (这句话可以多读几遍) 通过上边的遵旨可以得出要发布app需要哪些文件,为什么配置过程中要上传或者生成那些文件,结论如下 申请开发者账号,即花费了99刀给apple的账号,这是你可以登录develo...

Innosetup 脚本写注册表实现自定义协议(Url Protocol)

[Registry] Root: HKCR; SubKey: NGIE; ValueData: "NGIE"; ValueType: string; Flags: CreateValueIfDoesntExist UninsDeleteKey; Root: HKCR; SubKey: NGIE; ValueName: "URL Protocol";Val...

IAR for STM8的简介、下载、安装及注册教程

一、简介1.关于IAR for STM8 IAR for STM8 是一个嵌入式工作平台,主要应用于STM8 系列芯片的开发,现在(2018年3.10版本)能够支持市面上所有的STM8芯片。 个人认为,IAR for STM8和Keil差别并不是很大,只要熟悉Keil的使用,那上手IAR for STM8并不是什么难事,网络上也有许多相关资料可以查询。 2...