不写注册表的注册程序

来源:百度文库 编辑:神马文学网 时间:2024/06/06 04:25:08
当时他的要求是这样的:在EXCEL文件里面实现像应用软件那样的注册功能,只有在电脑上注册了才能正常使用。我当时的第一个想法就是,用API读写注册表。但是稍嫌麻烦了一点,有杀鸡用牛刀的感觉。
后来我想当然地采用了一种不用读写注册表的方法。老实说,这种方法简单得有些过份,以至于只能骗骗一些连电脑基础操作都不太懂的低级用户,并不具有真正的实用性。我个人是把它当成练习编程和拓展思路的习作。
思路这样的:注册,无非就是把某些信息写入操作系统中,在需要时再读取出来。现在既然不想用注册表,那不妨建一个文件,把它当注册表使用。至于文件的类型,首选自然是文本文件。
于是先建两个函数,一个用来创建用于存储注册信息的文本文件,另一个用于判断是否已经注册或注册系列号是否正确。
Public dayLong As Integer  '先定义了一个全局变量,用来存储当前日期与注册日期的间隔天数,以限制试用天数
Function createTxtReg(RegCode As String) '该函数用于创建一个注册文件,并写入注册信息,RegCode为注册系列号参数
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile(Application.Path & "\regfile.txt", True) '创建文件,最好放到一个不显眼的位置,这里建在EXCEL安装目录下
a.writeline (Trim(RegCode)) '写入注册系列号
a.writeline (Date) '写入注册日期
a.Close
End Function
Function regOrNo() '该函数用于判断是否注册、注册信息是否准确
On Error GoTo err_name
Dim txt(1) '数组,用于存放注册的信息。
Dim aReg
Dim exRegCode As Boolean
Dim arrReg(2) '数组,用于存放注册系列号。
arrReg(0) = "aabbcc"
arrReg(1) = "bbccdd"
arrReg(2) = "ccddee"
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.openTextFile(Application.Path & "\regfile.txt") '打开注册文件
For i = 0 To 1
txt(i) = a.readline '读取注册信息,并存到数组txt
Next
a.Close
For Each aReg In arrReg
If aReg = txt(0) Then
exRegCode = True
Exit For
End If
Next
If exRegCode <> True Then
regOrNo = "wrongReg"
Else
regOrNo = "successReg"
dayLong = Date - DateValue(txt(1))
End If
Exit Function
err_name:
regOrNo = "noReg"
Exit Function
End Function
两个函数已经写好,接下来就是对它们进行调用了。先是在文件打开时调用regOrNo函数进行判断,是否注册,以及注册是否正确。不通过,则显示注册窗口。
然后,在注册窗口上有一个用于输入注册系列号的文本框以及一个“注册”按钮。点该按钮后则调用前面两个函数,分别进行注册及判断注册。出错则提示。
Private Sub Workbook_Open() 'EXCEL文件打开时,进行判断
Dim RegCodeStr As String
RegCodeStr = regOrNo '调用regOrNo函数,返回特定值
If dayLong > 30 Then  '判断是否超期
MsgBox "注册日期已经过期,请重新注册!"
UserForm1.Show '显示注册窗口
Else
Select Case RegCodeStr
Case "wrongReg"
MsgBox "注册号有误,请重新注册!"
UserForm1.Show
Case "noReg"
MsgBox "您尚未注册,无法使用本系统"
UserForm1.Show
Case "successReg"
MsgBox "该系统已经注册!"
End Select
End If
End Sub
Private Sub cmdReg_Click() '注册窗体中的注册过程
Dim RegCodeStr As String
If IsNull(Me.txtRegCode) Or Me.txtRegCode = "" Then  'Me.txtRegCode就是文件框,用于输入注册系列号
MsgBox "注册号不得为空!"
Else
createTxtReg (Me.txtRegCode) '调用createTxtReg函数,创建注册文件,写入注册信息
RegCodeStr = regOrNo  '调用regOrNo函数,返回特定值
Select Case RegCodeStr
Case "wrongReg"
MsgBox "注册号有误,请重新注册!"
Case "noReg"
MsgBox "您尚未注册,无法使用本系统"
Case "successReg"
MsgBox "注册成功!"
Unload Me
End Select
End If
End Sub