以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于注册问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=105916)

--  作者:裴保民
--  发布时间:2017/8/29 10:13:00
--  关于注册问题

一个软件注册程序我在 AfterOpenProject 事件中写了一下代码:我该怎么同时判断注册表中的值呀?


Dim n As Integer = GetConfigValue("Count",1)
Dim Code As String = GetConfigValue("Register" & ComputerId,"")
Dim Ok As Boolean
If Code > "" AndAlso DecryptText(Code,"abc","abc") = ComputerId Then \'如果注册码正确
    OK = True
Else
    If n > 5 Then
        Forms("注册窗体").Open()
        Code = GetConfigValue("Register" & ComputerId,"")
        If Code > "" AndAlso DecryptText(Code,"abc","abc") = ComputerId Then \'如果注册码正确
            OK = True
        End If
    End If
    If n >10 AndAlso Ok = False Then
        Messagebox.Show("您正在使用的产品已经超出试用次数!")
        Syscmd.Project.Exit()
    End If
End If
n = n + 1
SaveConfigValue("Count",n)

 

Dim Count As Integer
Count = Registry.GetValue("HKEY_CURRENT_USER\\Software\\MyApp","Count",0)
Registry.SetValue("HKEY_CURRENT_USER\\Software\\MyApp","Count",Count + 1)
Output.Show(Count)

 

 

 

 

 

 

 

 


--  作者:有点甜
--  发布时间:2017/8/29 10:19:00
--  
try
    If Code > "" AndAlso DecryptText(Code,"abc","abc") = ComputerId Then \'如果注册码正确
        OK = True
    Else
        If n > 2 Then
            Forms("注册").Open()
            Code = Registry.GetValue("HKEY_CURRENT_USER\\Software\\MyApp", "Register" & ComputerId, "")
            \'Code = GetConfigValue("Register" & ComputerId,"")
            If Code > "" AndAlso DecryptText(Code,"abc","abc") = ComputerId Then \'如果注册码正确
                OK = True
            Else
                Syscmd.Project.Exit()
            End If
        End If
        If n > 5 AndAlso Ok = False Then
            Messagebox.Show("您正在使用的产品已经超出试用次数!")
            Syscmd.Project.Exit()
        End If
    End If
    \'n = n + 1
    \'n = Registry.GetValue("HKEY_CURRENT_USER\\Software\\MyApp","Count",0)
    Registry.SetValue("HKEY_CURRENT_USER\\Software\\MyApp","Count",n + 1)
catch ex as exception
    Syscmd.Project.Exit()
end try

--  作者:有点甜
--  发布时间:2017/8/29 10:20:00
--  

 参考 http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=89665&skin=0

 


--  作者:peibaomin
--  发布时间:2017/8/29 10:52:00
--  
甜老师怎么同时判断注册表值和外部储存的值呢?
--  作者:有点甜
--  发布时间:2017/8/29 11:18:00
--  
以下是引用peibaomin在2017/8/29 10:52:00的发言:
甜老师怎么同时判断注册表值和外部储存的值呢?

 

你要获取什么值判断什么值?逻辑是什么?具体你的问题。


--  作者:裴保民
--  发布时间:2017/8/29 12:22:00
--  

有一个注册窗口,我想想实现:

(1)打开程序后首先判断是否已经注册,如果已经注册,则表示为正式版,进入正常程序界面。

(2)如果软件未注册,软件试用次数为60次,当达到30次后,当进入程序前打开注册窗体,如果单击注册按钮时则根据机器硬件信息获取注册码,根据注册码来注册为正式版,如果单击取消按钮则取消注册,进入正常程序;如果未注册版试用次数达到60次如果还未注册,单击取消按钮则直接退出程序。

    我在帮助文件中看到,用“SaveConfigValue函数保存进入程序次数,使用次数是保存在设置信息中的,而设置信息是存储在项目文件自身中的,所以覆盖项目文件,意味着使用次数会归零,用户可以继续使用。我想将使用次数同时保存到注册中,运行程序后同时判断“项目文件”和“注册表”的值,如果有任何一个值满足相应的条件时就执行相应的代码,这样即使覆盖项目文件,试用版用户也不能再继续使用了。

 

 

Dim n As Integer = GetConfigValue("Count",1)
Dim Code As String = GetConfigValue("Register" & ComputerId,"")
Dim Ok As Boolean
If Code > "" AndAlso DecryptText(Code,"abc","abc") = ComputerId Then \'如果注册码正确
    OK = True
Else
    If n > 5 Then
        Forms("注册窗体").Open()
        Code = GetConfigValue("Register" & ComputerId,"")
        If Code > "" AndAlso DecryptText(Code,"abc","abc") = ComputerId Then \'如果注册码正确
            OK = True
        End If
    End If
    If n >10 AndAlso Ok = False Then
        Messagebox.Show("您正在使用的产品已经超出试用次数!")
        Syscmd.Project.Exit()
    End If
End If
n = n + 1
SaveConfigValue("Count",n)

 这样只是将使用次数储存在设置信息中的,而设置信息是存储在项目文件自身中,通知执行相应的代码,怎么同时将使用次数储存在注册表中和同时判断其条件执行相应的代码呢? 

注册表写入我写了如下代码:  不知道如何同时保存和判断条件,麻烦老师给个方案!

 

Dim Count As Integer
Count = Registry.GetValue("HKEY_CURRENT_USER\\Software\\MyApp","Count",0)
Registry.SetValue("HKEY_CURRENT_USER\\Software\\MyApp","Count",Count + 1)
Output.Show(Count)

 

 

 

 

 


--  作者:有点甜
--  发布时间:2017/8/29 12:34:00
--  

Dim n As Integer = GetConfigValue("Count",1)
Dim Count As Integer
Count = Registry.GetValue("HKEY_CURRENT_USER\\Software\\MyApp","Count",0)

Dim Code As String = GetConfigValue("Register" & ComputerId,"")
Dim Ok As Boolean
If Code > "" AndAlso DecryptText(Code,"abc","abc") = ComputerId Then \'如果注册码正确
    OK = True
Else
    If n > 5 OrElse count > 5 Then
        Forms("注册窗体").Open()
        Code = GetConfigValue("Register" & ComputerId,"")
        If Code > "" AndAlso DecryptText(Code,"abc","abc") = ComputerId Then \'如果注册码正确
            OK = True
        End If
    End If
    If (n >10 OrElse count > 10) AndAlso Ok = False Then
        Messagebox.Show("您正在使用的产品已经超出试用次数!")
        Syscmd.Project.Exit()
    End If
End If
SaveConfigValue("Count",n+1)
Registry.SetValue("HKEY_CURRENT_USER\\Software\\MyApp","Count",Count + 1)

 


--  作者:裴保民
--  发布时间:2017/8/29 13:38:00
--  

到期后怎么不显示注册窗体呀?

 


--  作者:有点甜
--  发布时间:2017/8/29 15:04:00
--  
以下是引用裴保民在2017/8/29 13:38:00的发言:

到期后怎么不显示注册窗体呀?

 

 

你弹出值看看 msgbox(n & "  " & count)


--  作者:裴保民
--  发布时间:2017/8/29 15:25:00
--  
单击确认按钮,说明已经注册属于正式版了,怎么下次启动查询时,还是属于未注册状态呢?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:试用版次数限制.foxdb

[此贴子已经被作者于2017/8/29 15:29:17编辑过]