現在是網絡時代了,相信有許多的網蟲們必和我一樣,經常的遨游于網絡之中,時常還貪一些小便宜,down一些免費實用的好東東下來,盡情的享受網絡帶給我們的免費快餐.然而美中不足的是,有些軟件,說是免費的,其實都有他們的試用期,即給你一個固定的期限免費使用,一旦超出一定的期限如果你堅決拒付使用費的話,呵呵,那個軟件就不能啟動了.無疑,這是那些軟件推銷
商們的一種促銷的手法而已.一般的人都只能望之而興嘆,而有寫小聰明的人,會試著修改系統的日期或是注冊表,企圖縮短已使用的時間.呵呵,就象我,誰知道天外有天,軟件開發商們早知道你有這招,當你修改了日期后,軟件通常可以檢測出來,通知你不可以修改系統日期,否則不能正常使用.如大名鼎鼎的dreamwaver,有些小聰明的我(其實笨的很了)也不得不翹起大拇指,說:"高,實在是高!"所以一旦到了軟件的試用期,再好的東東也不得不舍棄了,或是重新down一個下來.(有時再down也不可用)知道了這,你難道不想也來個"試用期"裝點一下我們自己開發的程
序?也讓別人向我們翹一下大拇指?什么,太難?不難不難,我,呵呵,已經閉門修煉了幾日,終于研究成功了不修改注冊表,巧用vb數據庫,編寫軟件使用期的方法.
好了,不賣關子了,就開始我的心得大法吧,不過首先,還是先講講我的思路:
a: 應有的功能:
1) 給定一個試用期限,在系統每次啟動時會判斷軟件已經使用了幾天,還有幾天可用以及啟動的次數.
2) 當系統日期被修改成往日的日期后,系統能自動判別,禁止修改日期,不于正常啟動.
3) 當試用期到,顯示信息,不于啟動程序.b:簡單的思路
1) 在系統第一次運行時,在一個隱蔽的地方(如: c:/windows/system)建立一個用以記錄系統信息的數據庫文件,如date.mdb,使用一張表date,有三個字段first_time,last_time和times.其中first_time為系統第一次啟動時的日期,即試用期的第一天.last_time為系統最近一次啟動的時間,而times為記錄系統啟動的次數.
2) 系統每次啟動會檢測當前的日期同last_time做比較,如果當前的日期(如00/09/30)比last_time(如00/10/01)還舊,說明系統的日期被推后,顯示信息,不于啟動系統.反之,則轉入第三步.
3) 取出數據庫中的first_time,同當前的日期做減法運算,看所的的天數是否在使用期限內.如果在,則轉入第四步,否則顯示信息,不于啟動系統.
4) 修改數據庫的last_time字段為當前的日期,顯示系統已經使用的情況,正常啟動系統.
好了,羅羅嗦嗦講了一大統,我想,大家一定都明白了,怎么樣,我說不難吧,根本不用修改系統的注冊表.只要大家把date.mdb藏好了,不被發現就萬事大吉了.而且你可以給這個數據庫加上密碼,然后把first_time,last_time,times的字段名改個面目全非,就算有高手發現了數據庫,破解了密碼,他也不知道這三個字段的含義和這個數據庫是那個軟件所帶的文件,呵呵,不說了,還是看看我的源碼吧:
在您的工程中,請以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, "天華電腦藝術創意工作室"
'效果如圖1 (見附件1)
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, "天華電腦藝術創意工作室"
'效果如圖3 (見附件3)
end
end if
'開始檢測是否超期
if date - rd2.fields("first_time") >= 30 then '設定試用期為30天
msgbox "您已經啟動本系統" & rd2.fields("times") & "次了,而且已經到了30天的試用期,如果您想繼續使用本軟件,請您到本公司注冊并購買正版的軟件!", 48, "天華電腦藝術創意工作室"
'效果如圖4 (見附件4)
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, "天華電腦藝術創意工作室"
'效果如圖2 (見附件2)
mainform.show '啟動您的主窗體
end if
end if
exit sub
error:
msgbox "系統錯誤!"
end sub
好了,終于編寫完了我們的軟件試用期的問題,怎么樣,不難吧,而且不用修改注冊表信息,所以一般的高手會想到到注冊表去修改或是恢復最初的注冊表,但這都是無濟于事的,而且我的這種方法還有一個重要的特點就是只能安裝本系統一次,因為當其卸載了原來的程序,想從新安裝的時候,呵呵,因為date.mdb仍然存在,所以就真正的控制了只能安裝一次,使用30天的期限,是不是比dreamwaver還要酷.如果想重新安裝,只要附加一個小程序,刪除那個數據庫文件即可.如果您使用這種方法,再結合注冊表,我想效果一定更佳,呵呵,好了,就這樣,等你有了更好更妙的方法別忘了寫信告訴我:[email protected]
本文來源于網頁設計愛好者web開發社區http://www.html.org.cn收集整理,歡迎訪問。