|
3#
楼主 |
发表于 2011-9-25 02:36:00
|
只看该作者
本帖最后由 roych 于 2011-9-25 02:37 编辑
不过,如果出于对安全要求更高的话,则可以写入注册表(特别是HKEY_CLASS_ROOT或者其它较少用的键里,即便用户能想到在注册表里找,想找到也挺费时间的),详细请参考附件,里面大多都有注释,这里不打算细说。相反,我想提一下的是下面这段代码:
- Private Sub Form_Load()
- Dim a As Long
- a = GetSetting("MyApp", "set", "day", 0)
- If a = 10 Then
- MsgBox "试用期已过,请联系gfuuyygy!"
- Else
- MsgBox "现在剩下:" & 10 - a & "试用天数,好好珍惜!"
- if day(now)-a>0 then
- a = RemainDay + 1
- SaveSetting "MyApp", "set", "times", a
- End if
- End if
- End Sub
复制代码 之所以提这段代码,是因为它曾经很盛行,可能影响过不少人,以致现在时不时有人还在问GetSetting或者SaveSetting是干吗用的。这两个函数其实就是把获取或保存注册表位置:HKEY_CURRENT_USER\VB and VBA Program Settings的数据。从思路上看,这段代码似乎没多大问题,而事实是不是这样就能达到限制试用天数的功能了呢?事实上Roy开始学习代码,也没怀疑过这段代码,不过调整系统日期测试后,一下子成了“茫然哥”{:soso__10328103393431676979_4:} ,这次算是公报私仇吧。
很明显这是断章取义的一段代码。首先没有定义day键,也没有定义RemainDay。因此每次运行a都成了0,直接执行下一步得到a=1,无法累计天数。事实上,前面也说了,单纯一个键值是不可能得出正确判断的。因此这里同样也需要建立初始日期的键值和结束日期的键值。
至于真正代码该怎么写,如果大家有兴趣的话,可以参考下附件的思路来完成,算是家庭作业吧。不过对于这些众所周知的位置,安全性自然不算太好,这是理所当然的。
|
|