先声明下:我决不是用来赚钱,我也很鄙视那种有点小功能,就收费的软件.由于我论坛的人气太低所以想到这种下策(没有办法)只要去我论坛发帖就送序列号.
言归正传
我做了一个简单的软件要怎样用VB实现软件注册的功能呢?
没有别的要求,就是实现着册能用就可以了
參考答案:首先用函数获取某个逻辑驱动器的序列号为申请码;
然后你自己定义个数字字符串为验证字符串:比如是“***********”;
验证的时候,把申请码和你的验证串均转换为16进制数字,然后把他门进行异或运算(其他也可以),把得到的结果作为验证码即可。
这样,1台机器就只有1个申请码,无论谁想注册,必须向你所要验证码,你可以把验证码在BBS上发给他。
验证(text1是输入验证码的文本框):
if hex(GetSerialNumber("C:\\")) xor hex(***********)=text1.text then
msgbox"通过验证",,""
'其它的程序代码
else
msgbox "验证码错误",,""
'其它的程序代码
end if
顺便给你获取逻辑驱动器的序列号的函数:
用法(获取C盘的序列号):sn1=hex(GetSerialNumber("C:\\"))
Private Declare Function GetVolumeInformation Lib "kernel32.dll" Alias _
"GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal _
lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Integer, _
lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, _
lpFileSystemFlags As Long, ByVal lpFilesyStemNameBuffer As String, _
ByVal nFilesSystemNameSize As Long) As Long
Function GetSerialNumber(sRoot As String) As Long
Dim lSerialNum As Long
Dim R As Long
Dim strLabel As String, strType As String
strLabel = String$(255, Chr$(0))
strType = String$(255, Chr$(0))
R = GetVolumeInformation(sRoot, strLabel, Len(strLabel), _
lSerialNum, 0, 0, strType, Len(strType))
GetSerialNumber = lSerialNum
End Function