加密解密安全
限制软件试用次数及时间
2003-12-12 22:30:16

作者:ec  更新日期:2002-12-20  浏览人次:91   

 

问题:

 

 如何写注册表限次? 如何通过写注册表限制数据库使用时间?比如到某年某月某日过期。 

 

回答:

 

 在模块中加入如下代码,然后再启动时用名字为Autoexec的宏启动 '其实本例非常简单,你只要弄懂 SaveSetting和GetSetting即可 '本例会修改注册表。

Option Compare Database Option Explicit Dim HowMany As String Dim addTimes As Integer

Sub Times()     '初始注册表,在注册表写入键值     SaveSetting "HerdsboyTimeLimit", "Settings", "Times", "1"

    '把这句改为写入时间,以后通过datediff比对now     '与第一次写入的时间就可以达到限制时间的目的     MsgBox "欢迎第1次程序使用本程序!", , "通用限次程序" End Sub

Sub Changetimes()     '把字符值强制转为整形值     HowMany = Cint(GetSetting("HerdsboyTimeLimit", "Settings", "Times"))      HowMany = HowMany + 1  '增加次数     addTimes = CStr(HowMany) '把次数重新转为字符串     '重写注册表值     SaveSetting "HerdsboyTimeLimit", "Settings", "Times", addTimes  End Sub

Function Gettimes() On Error Resume Next     '加载,获得使用次数     HowMany = Cint(GetSetting("HerdsboyTimeLimit", "Settings", "Times"))      If HowMany = "" Then         Call Times   '如果注册表没有该键值,加载写入注册表过程     ElseIf HowMany <= 100 Then         '判断使用次数,小于100继续使用         MsgBox "你使用了" & HowMany & "次本程序!", , "通用限次程序"           Call Changetimes '改变使用次数         DoCmd.OpenForm "form"         Exit Function     Else         MsgBox "你第" & HowMany & "次使用了本程序,超过使用次数!", , "通用限次程序"           '判断使用次数,大于100警告并停止使用         DoCmd.Quit     End If End Function  

 

 

例2

'限制软件30天试用 

Dim ReValue As Date '声明时间变量 Dim name As String '声明字符串变量,软件名称 Dim dd As Variant '声明数值变量,dd为日期差

name = "gggg" '给变量赋值软件名为gggg

ReValue = GetSetting(name, "MainKey", "DateValue", Date) '读取注册表软件名gggg的键值,如果没有则为当前日期 Me.Text1 = ReValue dd = DateDiff("d", ReValue, Date) '计算日期差 Me.Text2 = dd

If dd = 0 Then '如果是第一天运行     SaveSetting name, "MainKey", "dateValue", Date '写注册表 End If If dd > 30 Then     MsgBox "软件已过期" Else     MsgBox "软件可以试用"     'DoCmd Quit     MsgBox "还剩下" & 30 - dd & "天试用期!" End If