另一种软件加密方式
采用UKey进行软件加密和授权,是目前最为可靠和安全的方式。
如果不想用UKey,也可以用下面介绍的方法,即获取计算机的硬件配置信息,然后据此生成机器码和注册码,输入正确的注册码才能启动系统。
Foxtable提供了一个全局变量ComputerId,该变量返回12个字符,前4位表示硬盘信息,中间4位表示主板信息,最后4位表示CPU信息。
多数情况下,
不同的电脑会有不同的ComputerId,而且即使格式化硬盘重新安装系统,ComputerId的返回值也不会改变。
这种方式可以省去采购UKey的费用,但是和使用UKey加密相比,存在以下不足:
1、安全性差,对于有稍微有点破解常识的人来说,破解这样的加密系统可以说是手到擒来。
2、虽然理论上不同的电脑有不同的ComputerId,但是实际上ComputerId相同的电脑是经常存在的,而且格式化或重新安装系统后,ComputerId还是
会有一定的概率发生变化的。
由于UKey的费用并不高,而安全性和可靠性却强得多,所以官方推荐大家采用UKey加密,只有并不重要的系统才可以考虑下面的加密方式。
在学习下面的示例之前,请大家先回顾一下:保存设置信息
示例
本示例可以参考CaseStudy目录下的文件“注册系统设计演示.table”。
假定你提供了一个项目给客户试用,希望前30次正常启动,30次后出现注册窗口,60次后如果没有注册,则拒绝进入。
设计步骤:
1、设计一个注册码输入窗口,窗口类型为模式,窗口名称为“注册”,窗口中的控件如下图:
2、将窗口的AfterLoad事件设为:
e.Form.Controls(
"TextBox1").Value = ComputerId因为可能有不同的电脑使用项目,所以用于保存注册码的设置名称必须包括机器码,以避免注册码被覆盖。
3、将窗口中“确定”按钮的代码设为:
SaveConfigValue(
"Register" & ComputerId, e.Form.Controls("TextBox2").Value)4、最后将项目的AfterOpenProject事件设为:
Dim
n As Integer = GetConfigValue("Count",1)至此我们为自己的项目文件加上了试用和注册功能,用户提供机器码之后,可以在命令窗口执行下面的代码计算得出注册码:
Output.Show(EncryptText(
"用户提供的机器码","abc","abc"))提示:
上面的代码,使用次数是保存在设置信息中的,而设置信息是存储在项目文件自身中的,所以覆盖项目文件,意味着使用次数会归零,用户可以继续使用。
所以实际应用的时候,应该同时在注册表中保存使用次数,启动的时候同时从设置信息和注册表读取使用次数,并取最大值。
关于注册表的读写,参考:Registry