永发信息网

VB以序列号方式激活成功后,第二次运行不再提示激活怎么做?

答案:5  悬赏:70  手机版
解决时间 2021-11-21 01:04
  • 提问者网友:疯孩纸
  • 2021-11-20 15:45
VB以序列号方式激活成功后,第二次运行不再提示激活怎么做?
最佳答案
  • 五星知识达人网友:旧脸谱
  • 2021-11-20 16:09
将序列号保存到ini文件中,每次运行都检查,没有序列号则提示激活。如果想重装系统要激活,保存到系统盘中,隐秘点就是追问我想做以注册表方式的,你会弄吗?追答保存
SaveSetting "MyApp","Startup", "a", a
取出
a=GetSetting("MyApp", "Startup", "a")
不知道是不是,追问辛苦了,虽然不知道是不是,但是不是注册表方式始终不方便,我做的软件是单一EXE的,最好不要有任何附属文件或DLL控件。追答我试了下可以追问myapp startup a 分别填什么?追答保存位置是HKEY_CURRENT_USER\Software\VB and VBA Program Settings\MyApp
这三个随便你填什么,a是序列号追问怎样的话肯定第一次运行的时候,注册表是没有这个文件的。
那如果VB发现没有这个文件,则跳过这个操作进入激活界面,怎么做?
我现在弄的结果是,第一次运行时,提示找不到该注册表,然后报错。追答读取时找不到返回的应该是“”吧,返回空时我这里没有报错,你用if处理下不就行了。if GetSetting("MyApp", "Startup", "a")=“” then t调用激活语句的代码追问你这是返回那个注册表为空时的条件语句。

但是若这个注册表整个路径都不存在的时候怎么搞呢?追答On Error Resume Next
在读取前面加上这句,错误后继续运行,linkname就等于默认值“”,你再加以判断
全部回答
  • 1楼网友:三千妖杀
  • 2021-11-20 20:12

参考这段程序,看看有没有帮助。VB 6.0的代码。

 

  直接把激活码之类的放在程序目录下的一个文本文件中,如果不放心,可以在存取激活码的时候做加密解密,每次运行都检查硬盘进行计算,比较激活码是否正确。这样就不用写注册表了,即使重新安装都不需要再激活,既方便,又安全,也减少了对注册表的操作,减少对客户系统的影响。
  供参考。

追问试了下,感觉不太好,谢谢你。
  • 2楼网友:一叶十三刺
  • 2021-11-20 18:37
我做过把程序文件运行后获取运行商硬盘序列号,由运行商发给序列号,你再做一个激活码生成程序计算一个此序列号的激活码,再这个激活码去激活运行商的程序,这样一机一个激活码,很管用,而且简单追问问题是,第二次运行这个软件,怎样做才能不显示注册框直接进入主界面?追答我的思路是第一次注册成功后生成一个文件放在C:\WINDOWS\system32比如X.reg,因为注册表容易被找到,程序第二次运行时读取文件内容再反计算硬盘序列号是否与运行机的硬盘序列号相同,相同通过,否则出现重新注册。
  • 3楼网友:低音帝王
  • 2021-11-20 17:50
新手的想法:

  直接把激活码之类的放在程序目录下的一个文本文件中,如果不放心,可以在存取激活码的时候做加密解密,每次运行都检查硬盘进行计算,比较激活码是否正确。这样就不用写注册表了,即使重新安装都不需要再激活,既方便,又安全,也减少了对注册表的操作,减少对客户系统的影响。
  供参考。追问思路我明白,但是不知道怎么做。追答参考下面这些,看有没有帮助。VB 6.0的代码。

Public yjh As Boolean
Public xlhS As String

Private Sub Form_Initialize()
Dim jhmS As String
jhmS = ""
yjh = False
xlhS =jsxlh '你的计算序列号方式过程
yjh = yjjh '判断是否已经激活
While yjh = False ‘未激活时要求输入激活码
jhmS = InputBox("序列号是" & xlhS & "请输入激活码:", "请激活后使用")
If jhmS <> "" Then
If jhmS = jsjhM(xlhS) Then
yjh = True
Open App.Path & "\bcjhxx" For Output As #1 '正确激活后,保存激活信息
Write #1, jhmS
Close #1
End If
Else
End '不输入任何信息时退出
End If
Wend
End Sub

下面的函数通过读取文件信息,判断是否已经激活
Private Function yjjh() As Boolean
Dim yjjhm As String
If Dir(App.Path & "\bcjhxx") <> "" Then
Open App.Path & "\bcjhxx" For Input As #1
If LOF(1) > 0 Then
Line Input #1, yjjhm
Close #1
Else
yjjh = False
Close #1
End If
yjjhm = Mid(yjjhm, 2, Len(yjjhm) - 2) '去掉写入文件时,激活码 两端加上的引号
If yjjhm = jsjhM(xlhS) Then
yjjh = True
End If
Else
yjjh = False
End If
End Function

下面的函数是你自己设定的计算激活码的方式,由此判断是否可以正确激活
Private Function jsjhM(XLH As String) As String

End Function

下面的函数是你自己设定的计算序列号的方式,由此计算得出序列号
Private Function jsxlh() As String

End Function
  • 4楼网友:痴妹与他
  • 2021-11-20 17:33
第一次激活后,把序列号储存到文件,注册表,数据库,或网络中,当然要加密。下次运行的时候,再到这些地方取出序列号,解密后检测是否正确(也就是把激活的动作再做一次,但不提示),正确就继续运行,错误就说明系统被重装了,要求用户重新激活
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯