利用硬盤序列號計算軟件注冊碼。
在模塊中加入下列聲明:
Public Declare Function GetVolumeInformation Lib "kernel32" _
Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, _
ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, _
lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, _
lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, _
ByVal nFileSystemNameSize As Long) As Long
´得到某一磁盤分區的信息,如C:
窗體代碼如下:
Option Explicit
Private Regid, Localid As Long
Private Sub CmdLocalID_Click()
´根據C盤序列號得到原ID
Dim Driver, VolName, Fsys As String
Dim volNumber, MCM, FSF As Long
Driver = "c:\"
Dim res As Long
res = GetVolumeInformation(Driver, VolName, 127, volNumber, MCM, FSF, Fsys, 127)
´volNumber是C盤序列號
Localid = volNumber / 2 + 123456789
Text1.Text = Localid
End Sub
Private Sub CmdRegID_Click()
´根據原ID算出注冊ID
If IsNumeric(Text1.Text) Then
Regid = CLng(Text1.Text) / 4 * 3 + 987654321
Else
´error
End If
Text2.Text = Regid
End Sub
Private Sub CmndCheckID_Click()
´驗證注冊ID
Dim Driver, VolName, Fsys As String
Dim volNumber, MCM, FSF As Long
Driver = "c:\"
Dim res As Long
res = GetVolumeInformation(Driver, VolName, 127, volNumber, MCM, FSF, Fsys, 127)
Dim Tid As Long
Tid = volNumber / 2 + 123456789
If Regid = Tid / 4 * 3 + 987654321 Then
MsgBox "正確!"
Else
MsgBox "錯誤!"
End If
End Sub
為便于演示,我在窗體上用了兩個文本框三個按鈕,請根據情況靈活使用,可以在用戶端算出原ID,發給你,你算出注冊ID再發給用戶,驗證當然是在用戶端啦。ID算法很簡單,只作示范。此注冊ID只能在這一臺機器上使用,對于非高手用戶來說是足夠啦。
注:如用戶格式化C:盤后需重新獲得ID。
原文轉自:http://www.anti-gravitydesign.com