概念不清。 Global ZHUCE As Integer '说明:全局变量ZHUCE=-1试用期满,ZHUCE=-2已注册,ZHUCE=其它值为剩余天数 Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, ByRef phkResult As Long) As Long Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByVal lpData As String, ByRef lpcbData As Long) As Long Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long Sub autoopen() Main End Sub Private Sub Main() '程序总入口 Dim a As Long, rc(3) As Long, hKey As Long, KeyValType As Long, KeyValSize(3) As Long Dim c As String, h As String, tmpVal(3) As String Dim datetime As Integer datetime = 30 '试用期天数 ZHUCE = -1 On Error GoTo cuowu '以下从注册表HKEY_LOCAL_MACHINE\Software\MyProgram的三个值中取出相关数据字串tmpVal(3) a = RegOpenKeyEx(&H80000002, "Software\MyProgram", 0, 131135, hKey) ' 打开注册表关键字 For a = 1 To 3: tmpVal(a) = String$(1024, 0): KeyValSize(a) = 1024: Next rc(1) = RegQueryValueEx(hKey, "MyProgram3", 0, KeyValType, tmpVal(1), KeyValSize(1)) rc(2) = RegQueryValueEx(hKey, "MyProgram2", 0, KeyValType, tmpVal(2), KeyValSize(2)) rc(3) = RegQueryValueEx(hKey, "MyProgram1", 0, KeyValType, tmpVal(3), KeyValSize(3)) For a = 1 To 3 If (Asc(Mid(tmpVal(a), KeyValSize(a), 1)) = 0) Then tmpVal(a) = Left(tmpVal(a), KeyValSize(a) - 1) Else tmpVal(a) = Left(tmpVal(a), KeyValSize(a)) End If Next a = RegCloseKey(hKey) '关闭注册表 '使用期限判断 If tmpVal(3) = "sign3" Then ZHUCE = -2: Exit Sub '查找到已注册标志sign3 If Len(tmpVal(1)) = 1023 And Len(tmpVal(2)) = 1023 And Len(tmpVal(3)) = 1023 Then '首次使用,将当前日期分别写入tmpVal(1)和tmpVal(2)中,在tmpVal(3)中写入准许运行标志sign1 CreateObject("WScript.Shell").regWrite "HKEY_LOCAL_MACHINE\Software\MyProgram\MyProgram3", Date$, "REG_SZ" CreateObject("WScript.Shell").regWrite "HKEY_LOCAL_MACHINE\Software\MyProgram\MyProgram2", Date$, "REG_SZ" CreateObject("WScript.Shell").regWrite "HKEY_LOCAL_MACHINE\Software\MyProgram\MyProgram1", "sign1", "REG_SZ" ZHUCE = datetime MsgBox "试用期剩余" & Trim(datetime) & "天" Else If tmpVal(3) = "sign2" Then '查找到永久中止标志sign2中止使用 ZHUCE = -1 Exit Sub MsgBox "试用期已满,请您注册!" End If If Date < DateValue(tmpVal(2)) Then '人为将系统日期往回更改中止使用 '写入tmpVal(3)中止使用字串“sign2” CreateObject("WScript.Shell").regWrite "HKEY_LOCAL_MACHINE\Software\MyProgram\MyProgram1", "sign2", "REG_SZ" ZHUCE = -1 MsgBox "试用期已满,请您注册!" Else If DateValue(Date) - DateValue(tmpVal(1)) > datetime Then '使用期超过datetime天中止使用 '写入tmpVal(3)中止使用字串sign2 CreateObject("WScript.Shell").regWrite "HKEY_LOCAL_MACHINE\Software\MyProgram\MyProgram1", "sign2", "REG_SZ" ZHUCE = -1 MsgBox "试用期已满,请您注册!" Else '写入当前日期于tmpVal(2)中 CreateObject("WScript.Shell").regWrite "HKEY_LOCAL_MACHINE\Software\MyProgram\MyProgram2", Date$, "REG_SZ" ZHUCE = datetime - (DateValue(Date) - DateValue(tmpVal(1))) MsgBox "试用期剩余" & Trim(datetime) & "天" End If End If End If cuowu: End Sub
|