用VB实现软件试用期

Author: 高勇 Date: 2001年 5期

?牐牬蠹叶贾溃芏喙蚕砣砑加兴堑氖杂闷冖熂锤阋桓龉潭ǖ钠谙廾夥咽褂芒煶鲆欢ǖ钠谙奕绻慵峋鼍芨妒褂梅训幕埃呛牵歉鋈砑筒荒芷舳耍褪切薷淖⒉岜砘蛑匦掳沧岸济挥杏谩D阆氩幌胍脖喔龃杂闷诘某绦蚰兀坎荒眩椒ㄈ缦拢?
  #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字段为当前的日期,显示系统已经使用的情况,正常启动系统。
  ?牐牶昧耍灰蠹野裠ate.mdb藏好了,不被发现就万事大吉了。而且你可以给这个数据库加上密码,然后把first_time、last_time、times的字段名改个面目全非,就算有高手发现了数据库,破解了密码,他也不知道这个数据库是哪个软件所带的文件。
  #1    程序源码
  ?牐犜谀愕墓こ讨校胍許UB main()启动程序。
  ?牐燬ub main()?煟?
  ?牐燨n Error GoTo error
  ?牐牐?系统检测是否有date.mdb文件,如果没有,则是系统第一次启动,则建立之
  ?牐營f Dir("c:\windows\system\date.mdb")=""Then
  ?牐牐ё⒁庠诳?:你要确定工程引用了Microsoft  dao 2.5/3.5 compatibility library
  ?牐燚im WS As Workspace
  ?牐燚im DB As Database
  ?牐燚im TD As Tabledef
  ?牐燚im FLD As Field
  ?牐燚im IDX As Index
  ?牐燚im rd As Recordset
  ?牐燬et WS = DBEngine.Workspaces(0)??
  ?牐燬et DB = WS.CreateDatabase("c:\windows\system\date.mdb"dbLangGeneral)
  ?牐燚B.Connect =";pwd=andy"
  ?牐燬et TD = DB.CreateTableDef("date")
  ?牐燭D.Attributes = 0
  ?牐燭D.Connect =""
  ?牐燭D.SourceTableName = ""
  ?牐燭D.ValidationRule = ""
  ?牐燭D.ValidationText = ""
  ?牐牐? Field first_time
  ?牐燬et FLD = TD.CreateField("first_time",8,8)
  ?牐燜LD.Attributes = 1
  ?牐燜LD.DefaultValue = ""
  ?牐燜LD.OrdinalPosition = 0
  ?牐燜LD.Required = False
  ?牐燜LD.ValidationRule = ""
  ?牐燜LD.ValidationText = ""
  ?牐燭D.Fields.Append FLD
  ?牐牐? Field last_time
  ?牐燬et FLD = TD.CreateField("last_time",8,8)
  ?牐燜LD.Attributes = 1
  ?牐燜LD.DefaultValue = ""
  ?牐燜LD.OrdinalPosition = 1
  ?牐燜LD.Required = False
  ?牐燜LD.ValidationRule = ""
  ?牐燜LD.ValidationText = ""
  ?牐燭D.Fields.Append FLD
  ?牐牐? Field times
  ?牐燬et FLD = TD.CreateField("times",3,2)
  ?牐燜LD.Attributes = 1
  ?牐燜LD.DefaultValue = "'
  ?牐燜LD.OrdinalPosition = 2
  ?牐燜LD.Required = False
  ?牐燜LD.ValidationRule = ""
  ?牐燜LD.ValidationText = ""
  ?牐燭D.Fields.Append FLD
  ?牐燚B.TableDefs.Append TD
  ?牐燚B.Close
  ?牐燬et DB = WS.OpenDatabase("c:\windows\system\date.mdb")
  ?牐燬et rd = DB.OpenRecordset("date")??
  ?牐燱ith rd
  ?牐?.AddNew
  ?牐?.Fields("first_time")= Date
  ?牐?.Fields("last_time")= Date
  ?牐?.Fields("times")= 1
  ?牐?.Update
  ?牐燛nd With
  ?牐燚B.Close
  ?牐燤sgBox “这是你第一次启动本系统!你的试用期为30天,今天是第一天。谢谢使用!”,48,“天华电脑艺术创意工作室”
  ?牐牐?效果如图
  ?牐爉ainForm.Show '启动你的主窗体
  ?牐燛lse '系统有date.mdb文件,则不是第一次运行,就不用建立数据库文件了.
  ?牐燚im WS2 As Workspace
  ?牐燚im DB2 As Database
  ?牐燚im rd2 As Recordset
  ?牐燬et WS2 = Workspaces(0)??
  ?牐燬et DB2 = WS2.OpenDatabase("c:\windows\system\date.mdb",pwd ="springlover")    Set rd2 = DB2.OpenRecordset("date")??
  ?牐牐Э技觳庥没?是否修改了系统日期
  ?牐爎d2.MoveFirst
  ?牐營f rd2.Fields("last_time")> Date Then
  ?牐燤sgBox“对不起,你在本软件的试用期内不可以修改系统日期,否则将取消你对本系统的试用权.如果你想继续使用本软件。请你恢复系统日期。谢谢合作!”,48,“天华电脑艺术创意工作室”
  ?牐燛nd
  ?牐燛nd If
  ?牐牐Э技觳馐欠癯?
  ?牐營f Date - rd2.Fields("first_time")>= 30 Then'设定试用期为30天
  ?牐燤sgBox"你已经启动本系统" & rd2.Fields("times")&"次了,而且已经到了30天的试用期,如果你想继续使用本软件,请你到本公司注册并购买正版的软件!",48, "天华电脑艺术创意工作室"
  ?牐燛nd
  ?牐燛lse
  ?牐牐?仍在试用期内
  ?牐爊um% = rd2.Fields("times")??
  ?牐爎d2.Edit
  ?牐爎d2.Fields("last_time") = Date
  ?牐爎d2.Fields("times") = num + 1
  ?牐爎d2.Update
  ?牐燤sgBox "这是你第" & rd2.Fields("times")&"次使用本系统,你还有" & 30 - (Date - rd2.Fields("first_time")) &"天的试用期,祝你今天工作愉快!",48,"天华电脑艺术创意工作室"
  ?牐爉ainForm.Show '启动你的主窗体
  ?牐燛nd If
  ?牐燛nd If
  ?牐燛xit Sub
  ?牐爀rror??
  ?牐燤sgBox "系统错误!"
  ?牐燛nd Sub
  ?牐牶昧耍沼诒嘈赐炅宋颐谴杂闷诘娜砑话愕母呤只嵯氲降阶⒉岜砣バ薷幕蚴腔指醋畛醯淖⒉岜恚舛际俏藜糜谑碌摹6艺庵址椒ɑ褂幸桓鲋匾奶氐憔褪侵荒馨沧氨鞠低骋淮危蛭毙对亓嗽吹某绦颍胫匦掳沧暗氖焙颍蛭猟ate.mdb仍然存在所以就真正地控制了只能安装一次,使用30天的期限,是不是比Dreamweaver还要酷。如果想重新安装,只要附加一个小程序,删除那个数据库文件即可。如果你使用这种方法,再结合注册表,我想效果一定更佳,等你有了更好更妙的方法别忘了写信告诉我。??