大家都知道,很多共享軟件都有它們的試用期 即給你一個固定的期限**使用 超出一定的期限如果你堅決拒付使用費的話,呵呵,那個軟件就不能啓動了,就是修改註冊表或重新安裝都沒有用。你想不想也編個帶試用期的程序呢?不難,方法如下:
#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