给软件加个注册功能,一般高手如何做?

ykwang 2003-04-29 12:33:12
功能主要要求:1、防拷贝
2、凡一般破解
你们在程序第一次运行的时候,是不是在操作系统目录下增加一个识别文件?因为用INI文件的话,结果都显示在那里了
...全文
63 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
十八笔画 2003-04-29
  • 打赏
  • 举报
回复
写注册表
onebody 2003-04-29
  • 打赏
  • 举报
回复
设计原理
  利用API中的“GetVolumeInformation”函数提取使用者机器的硬盘序列号为特征码,注册时提交此码,经过软件著作权人加以运算,给出注册码,最后软件使用人输入注册码完成整个注册过程(为使说明简单,本例中以特征码减101做为注册码)。

  新建一模块文件
  新建一模块文件,并将如下声明的语句和常量添加到Module1.Bas模块中:

  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

  Global GetVal As Long

  编程时需注意的是要将声明语句写在同一行中。

  窗体设置
  在Form1上添加2个文本框,Name属性分别设置为Text1、Text2;再添加1个按钮,Name属性设置为Command1。

  添加代码
  将如下程序代码添加到Form1的Form1_Load事件中:

  Private Sub Form_Load()

  Dim TempStr1 As String * 256

  Dim TempStr2 As String * 256

  Dim TempLon1 As Long

  Dim TempLon2 As Long

  ………

  ‘读取是否注册的信息,如何控制这里不再说明

  ………

  Call GetVolumeInformation("C:\", TempStr1, 256, GetVal, TempLon1, TempLon2, TempStr2, 256)

  Text1.Text = GetVal ‘提取本机C盘的序列号至文本框一

  End Sub

  将如下程序代码添加到Command1的Command1_Click事件中:

  Private Sub Command1_Click()

  If Text2 〈〉 CStr(GetVal) Then

  MsgBox "注册码不正确,请认真检查输入是否正确。"

  Else

  MsgBox "你已经成功注册,请重新启动本软件。"

  ………

  (将正确注册的信息写入,使软件功能以后不受限制。具体方法依个人爱好进行设置。)

  ………

  End If

  End Sub

  至此,我们可以运行一下程序。你会发现我们已经简单地实现了利用硬盘序列号制作电子注册版软件的功能。
Quady515 2003-04-29
  • 打赏
  • 举报
回复
一般就是加个文件,写注册表等等,实用,实惠,实在!

牛人是在硬盘的空余位置写上点儿东东,FORMAT不掉的那种.

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧