如何做到一个软件的试用期

大家都知道,很多共享软件都有它们的试用期 即给你一个固定的期限**使用 超出一定的期限如果你坚决拒付使用费的话,呵呵,那个软件就不能启动了,就是修改注册表或重新安装都没有用。你想不想也编个带试用期的程序呢?不难,方法如下:
  #1 编程思路
   应有的功能:
   1.给定一个试用期限,在系统每次启动时会判断软件已经使用了几天,还有几天可用以及启动的次数。
   2.当系统日期被修改成往日的日期后,系统能自动判别“禁止修改日期”不予正常启动。
   3.当试用期到“显示信息”不予启动程序。
  #1 大致算法
   1.在系统第一次运行时,在一个隐蔽的地方(如“c :\windows\system”),建立一个用以记录系统信息的数据库文件,如date.mdb,使用一张表date,有三个字段first_time,last_time和times。其中first_time为系统第一次启动时的日期,即试用期的第一天。last_time为系统最近一次启动的时间,而times为记录系统启动的次数。
   2.系统每次启动会检测当前的日期同last_time做比较,如果当前的日期(如2000/09/30)在last_time(如2000/10/01)之前,说明系统的日期被推后,显示信息,不予启动系统。反之,则转入第三步。
   3.取出数据库中的first_time同当前的日期做减法运算,看所用的天数是否在使用期限内。如果在,则转入第四步“否则显示信息”不予启动系统。
   4.修改数据库的last_time字段为当前的日期,显示系统已经使用的情况,正常启动系统。
   好了,只要大家把date.mdb藏好了,不被发现就万事大吉了。而且你可以给这个数据库加上密码,然后把first_time、last_time、times的字段名改个面目全非,就算有高手发现了数据库,破解了密码,他也不知道这个数据库是哪个软件所带的文件。
  #1 程序源码
   在你的工程中,请以SUB main()启动程序。
   Sub main()
   On Error GoTo error
   '系统检测是否有date.mdb文件,如果没有,则是系统第一次启动,则建立之
   If Dir("c:\windows\system\date.mdb")=""Then
   '注意在开始:你要确定工程引用了Microsoft dao 2.5/3.5 compatibility library
   Dim WS As Workspace
   Dim DB As Database
   Dim TD As Tabledef
   Dim FLD As Field
   Dim IDX As Index
   Dim rd As Recordset
   Set WS = DBEngine.Workspaces(0)
   Set DB = WS.CreateDatabase("c:\windows\system\date.mdb"dbLangGeneral)
   DB.Connect =";pwd=andy"
   Set TD = DB.CreateTableDef("date")
   TD.Attributes = 0
   TD.Connect =""
   TD.SourceTableName = ""
   TD.ValidationRule = ""
   TD.ValidationText = ""
   ' Field first_time
   Set FLD = TD.CreateField("first_time",8,8)
   FLD.Attributes = 1
   FLD.DefaultValue = ""
   FLD.OrdinalPosition = 0
   FLD.Required = False
   FLD.ValidationRule = ""
   FLD.ValidationText = ""
   TD.Fields.Append FLD
   ' Field last_time
   Set FLD = TD.CreateField("last_time",8,8)
   FLD.Attributes = 1
   FLD.DefaultValue = ""
   FLD.OrdinalPosition = 1
   FLD.Required = False
   FLD.ValidationRule = ""
   FLD.ValidationText = ""
   TD.Fields.Append FLD
   ' Field times
   Set FLD = TD.CreateField("times",3,2)
   FLD.Attributes = 1
   FLD.DefaultValue = "'
   FLD.OrdinalPosition = 2
   FLD.Required = False
   FLD.ValidationRule = ""
   FLD.ValidationText = ""
   TD.Fields.Append FLD
   DB.TableDefs.Append TD
   DB.Close
   Set DB = WS.OpenDatabase("c:\windows\system\date.mdb")
   Set rd = DB.OpenRecordset("date")
   With rd
   .AddNew
   .Fields("first_time")= Date
   .Fields("last_time")= Date
   .Fields("times")= 1
   .Update
   End With
   DB.Close
   MsgBox “这是你第一次启动本系统!你的试用期为30天,今天是第一天。谢谢使用!”,48,“天华电脑艺术创意工作室”
   '效果如图
   mainForm.Show '启动你的主窗体
   Else '系统有date.mdb文件,则不是第一次运行,就不用建立数据库文件了.
   Dim WS2 As Workspace
   Dim DB2 As Database
   Dim rd2 As Recordset
   Set WS2 = Workspaces(0)
   Set DB2 = WS2.OpenDatabase("c:\windows\system\date.mdb",pwd ="springlover") Set rd2 = DB2.OpenRecordset("date")
   '开始检测用户是否修改了系统日期
   rd2.MoveFirst
   If rd2.Fields("last_time")> Date Then
   MsgBox“对不起,你在本软件的试用期内不可以修改系统日期,否则将取消你对本系统的试用权.如果你想继续使用本软件。请你恢复系统日期。谢谢合作!”,48,“天华电脑艺术创意工作室”
   End
   End If
   '开始检测是否超期
   If Date - rd2.Fields("first_time")>= 30 Then'设定试用期为30天
   MsgBox"你已经启动本系统" & rd2.Fields("times")&"次了,而且已经到了30天的试用期,如果你想继续使用本软件,请你到本公司注册并购买正版的软件!",48, "天华电脑艺术创意工作室"
   End
   Else
   '仍在试用期内
   num% = rd2.Fields("times")
   rd2.Edit
   rd2.Fields("last_time") = Date
   rd2.Fields("times") = num + 1
   rd2.Update
   MsgBox "这是你第" & rd2.Fields("times")&"次使用本系统,你还有" & 30 - (Date - rd2.Fields("first_time")) &"天的试用期,祝你今天工作愉快!",48,"天华电脑艺术创意工作室"
   mainForm.Show '启动你的主窗体
   End If
   End If
   Exit Sub
   error
   MsgBox "系统错误!"
   End Sub  

 

 

http://hi.baidu.com/winnower_007/item/2af1fc860e595329110ef38f

展开阅读全文

没有更多推荐了,返回首页