操作系统  办公  实用知识  设计  开发  WEB开发  移动开发  数据库  软件工程  网管  安全  管理  信息化  答疑  渠道 

利用硬盘序列号计算软件注册码

2004-6-11 作者:sth1002 转载自:CSDN 网友评论 0 条 点击进入论坛

  在模块中加入下列声明:
  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。

已有 0 位对此文章感兴趣的网友发布了看法    
我来评两句 登录邮箱: 密码:
  匿名发表
今日推荐
技术文库(共有 46430 篇文章)
操作系统
办公软件
实用知识
网络管理
软件开发
WEB开发
软件工程
数据库
设计在线
信息安全
行业信息化
管理信息化
重点推荐
电子杂志订阅
点击电子杂志名称查看样刊
输入E-mail地址即可订阅
E-mail