Foxtable(狐表)用户栏目专家坐堂 → 软件注册还是不懂!


  共有1979人关注过本帖树形打印复制链接

主题:软件注册还是不懂!

帅哥哟,离线,有人找我吗?
禾成
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:149 积分:1289 威望:0 精华:0 注册:2018/12/12 23:23:00
软件注册还是不懂!  发帖心情 Post By:2020/6/2 20:08:00 [只看该作者]

这段代码按理来说应该是正确的,
但就是达不到效果:
如果注册码正确执行完绿色的代码是不是应该停止了?不再执行后面 If n > 30 Then判断了
另外我注册表项改成了cncgl,有影响吗?
请老师指点一下

Dim n As Integer = Registry.GetValue("HKEY_CURRENT_USER\Software\cncgl","Count",0)
Dim Code As String =Registry.GetValue("HKEY_CURRENT_USER\Software\cncgl","Register" & HardDiskID,"")
Registry.SetValue("HKEY_CURRENT_USER\Software\cncgl","Count", n+1)
Dim Ok As Boolean
If Code > "" AndAlso DecryptText(Code,"abc","abc") = HardDiskID  Then '如果注册码正确
    OK = True
这里是不是应该加个停止执行的代码?加Return 不起作用,应该怎么写?
Else
    If n > 30 Then
        Forms("注册").Open()
        Code = Registry.GetValue("HKEY_CURRENT_USER\Software\cncgl","Register" & HardDiskID,"")
        If Code > "" AndAlso DecryptText(Code,"abc","abc") = HardDiskID  Then '如果注册码正确
            OK = True
        End If
    End If
Return  加上这个代码后面的不再执行了
    If n > 60 AndAlso Ok = False Then
        Messagebox.Show("您正在使用的产品已经超出试用次数!")
        Syscmd.Project.Exit()
    End If
End If

[此贴子已经被作者于2020/6/2 20:26:50编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105965 积分:538900 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/6/2 20:41:00 [只看该作者]

不需要加什么return,完全多余,if语句的说明好好看看:http://www.foxtable.com/webhelp/topics/0223.htm

Dim n As Integer = Registry.GetValue("HKEY_CURRENT_USER\Software\cncgl","Count",0)
Dim Code As String =Registry.GetValue("HKEY_CURRENT_USER\Software\cncgl","Register" & HardDiskID,"")
Registry.SetValue("HKEY_CURRENT_USER\Software\cncgl","Count", n+1)
Dim Ok As Boolean
If Code > "" AndAlso DecryptText(Code,"abc","abc") = HardDiskID  Then '如果注册码正确
    OK = True
Else
    If n > 30 Then
        Forms("注册").Open()
        Code = Registry.GetValue("HKEY_CURRENT_USER\Software\cncgl","Register" & HardDiskID,"")
        If Code > "" AndAlso DecryptText(Code,"abc","abc") = HardDiskID  Then '如果注册码正确
            OK = True
        End If
    End If
    If n > 60 AndAlso Ok = False Then
        Messagebox.Show("您正在使用的产品已经超出试用次数!")
        Syscmd.Project.Exit()
    End If
End If


 回到顶部
帅哥哟,离线,有人找我吗?
禾成
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:149 积分:1289 威望:0 精华:0 注册:2018/12/12 23:23:00
  发帖心情 Post By:2020/6/3 9:26:00 [只看该作者]

下面这个条件是满足了的,已经输入正确的注册码
If Code > "" AndAlso DecryptText(Code,"abc","abc") = HardDiskID  Then '如果注册码正确
    OK = True

我的注册码提交代码是这样的
If e.Form.Controls("textbox2").Text = EncryptText(e.Form.Controls("textbox1").Text, "abc", "abc") Then    '判断注册码是否正确
Registry.SetValue("HKEY_CURRENT_USER\Software\cncgl","Register" & HardDiskId, e.Form.Controls("textbox2").Value)   '如果正确则写入注册表
MessageBox.show("注册成功,感谢您的使用!")
e.Form.Close()
Else
MessageBox.show("无效的注册码,请重新输入")
End If


为什么还会执行下面的
else
If n > 30 Then
        Forms("注册").Open()


请老师解惑!
你让我看的教程我也看了
这是双分支形式里包含单分支
还有就是声明了一个逻辑变量“OK”感觉这个好像没什么用

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105965 积分:538900 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/6/3 9:45:00 [只看该作者]

第一个OK赋值确实没有什么用。但是不影响整体逻辑的处理。

如果是第一个if符合条件,不可能会执行else里面的代码的。既然能够进入注册窗口,说明第一个if条件肯定不成立

 回到顶部
帅哥哟,离线,有人找我吗?
禾成
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:149 积分:1289 威望:0 精华:0 注册:2018/12/12 23:23:00
  发帖心情 Post By:2020/6/3 10:03:00 [只看该作者]


Registry.SetValue("HKEY_CURRENT_USER\Software\cncgl","Register" & HardDiskId, e.Form.Controls("textbox2").Value)   '如果正确则写入注册表


上面注册码写入的是红色这个值    SetValue(keyName ,valueName ,value)

下面判断注册码是否正确判断的是蓝色这个值  SetValue(keyName ,valueName ,value)
是这里的问题吗?
这写入的是注册码,判断的是硬盘序号,我总觉得不对
?????

If Code > "" AndAlso DecryptText(Code,"abc","abc") = HardDiskID  Then '如果注册码正确
    OK = True

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105965 积分:538900 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/6/3 10:36:00 [只看该作者]

valueName 是键,GetValue通过这个键取得的也是value的值,不会有问题

自己调试一下
注册码提交代码是这样的
msgbox(e.Form.Controls("textbox1").Text)
msgbox(EncryptText(e.Form.Controls("textbox1").Text, "abc", "abc"))
If e.Form.Controls("textbox2").Text = EncryptText(e.Form.Controls("textbox1").Text, "abc", "abc") Then    '判断注册码是否正确
msgbox(e.Form.Controls("textbox2").Text)
Registry.SetValue("HKEY_CURRENT_USER\Software\cncgl","Register" & HardDiskId, e.Form.Controls("textbox2").Text)   '如果正确则写入注册表
MessageBox.show("注册成功,感谢您的使用!")
e.Form.Close()
Else
MessageBox.show("无效的注册码,请重新输入")
End If

……
    If n > 30 Then
        Forms("注册").Open()
        Code = Registry.GetValue("HKEY_CURRENT_USER\Software\cncgl","Register" & HardDiskID,"")
msgbox(Code)
msgbox(HardDiskID )
        If Code > "" AndAlso DecryptText(Code,"abc","abc") = HardDiskID  Then '如果注册码正确
            OK = True
        End If
    End If
    If n > 60 AndAlso Ok = False Then
        Messagebox.Show("您正在使用的产品已经超出试用次数!")
        Syscmd.Project.Exit()
    End If
……

 回到顶部
帅哥哟,离线,有人找我吗?
禾成
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:149 积分:1289 威望:0 精华:0 注册:2018/12/12 23:23:00
  发帖心情 Post By:2020/6/3 12:46:00 [只看该作者]

e.Form.Controls("textbox2").Text
搞了那么久原来问题出在这里,
谢谢有点蓝老师
感谢学习路上有你

 回到顶部