《给自己的软件制作注册码》由会员分享,可在线阅读,更多相关《给自己的软件制作注册码(4页珍藏版)》请在金锄头文库上搜索。
1、从今天起, 您开发的的任何软件如果您愿意都可以为之加密 -为您的软件制作一款注册机!当您看完这篇文章时, 您就可以理直气壮的告诉您的用户 : 喂, 想用我的软件是吧 ? 掏钱!.呵呵, 这当然只是给自己壮胆的话, 现在连万能注册机都有了, 人家还怕啥 ? 不过只要您想想微软, 人家再牛 B 的加密技术都会被国人 鄙视? 但人家不也在中国大把大把的捞钱吗?OK, 不扯了, 我们进入正题.同一般的软件注册一样, 我们这里的注册是这样进行的:1. 首先根据用户的硬件信息生成 24 位的机器码 - 相当于种子,用于生成随机数2. 采用注册机根据特征数字生成一个 24 位注册码- 相当于伪随机数生成器,
2、 输出长度自己定, 最后用一个格式化函数 ,将随机数映射到ASCII 字符集合3. 用户输入注册码注册成功假设客户很喜欢您的软件, 也假设他没有破解, 他需要通过以下方式向您取得注册码:(1).如果他能上网, 他需要把机器码用 Email 发给您;(2).如果他不能上网, 他可以把机器码用手机短信的方式发给您 .(3).如果他没有手机, 他可以带着机器码然后坐火车到您的办公室想您要一个注册码 .-第 3 条只是为了让您看帖子的时候别太枯燥了, 抱歉.现在, 您拿到了客户的机器码后, 如果您同时也收到了他汇的钱, 呵呵, 好像给软件加密就是为了要钱吧? 那么您就可以用客户的机器码生成一个唯一的注
3、册码再用同样的方式给用户,最后, 用户输入注册码即可!需要强调的是客户机器的硬件信息获取方式是有很多种选择的. 这里我们选择最放心的两个硬件: CUP 的序列号和硬盘的卷标号. 好了, 下面您就可以一步一步制作一款软件注册机了 . 步骤一: 获得 CUP 序列号和硬盘序列号的实现代码如下:获得 CPU 的序列号 public string getCpu()string strCpu = null;ManagementClass myCpu = new ManagementClass(win32_Processor);ManagementObjectCollection myCpuConnect
4、ion = myCpu.GetInstances();foreach( ManagementObject myObject in myCpuConnection)strCpu = myObject.PropertiesProcessorid.Value.ToString();break;return strCpu;取得设备硬盘的卷标号public string GetDiskVolumeSerialNumber()ManagementClass mc = new ManagementClass(Win32_NetworkAdapterConfiguration);ManagementObjec
5、t disk = new ManagementObject(win32_logicaldisk.deviceid=d:);disk.Get();return disk.GetPropertyValue(VolumeSerialNumber).ToString();步骤二: 收集硬件信息生成机器码, 代码如下: 生成机器码private void button1_Click(object sender, EventArgs e)label2.Text = getCpu() + GetDiskVolumeSerialNumber();/获得 24 位 Cpu 和硬盘序列号string strid
6、= new string24;/for (int i = 0; i = 48 & intNumberj = 65 & intNumberj = 97 & intNumberj 122)/判断字符 ASCII 值是否大于 z strAsciiName += Convert.ToChar(intNumberj - 10).ToString(); elsestrAsciiName += Convert.ToChar(intNumberj - 9).ToString();label3.Text = strAsciiName;/得到注册码else MessageBox.Show(请选生成机器码,注册提示
7、); 步骤四: 用户输入注册码注册软件, 演示代码如下:注册private void btnRegist_Click(object sender, EventArgs e)if (label3.Text != )if (textBox1.Text.TrimEnd().Equals(label3.Text.TrimEnd()Microsoft.Win32.RegistryKey retkey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(software, true).CreateSubKey(ZHY).CreateSubKey(ZHY.INI).CreateSubKey(textBox1.Text.TrimEnd();retkey.SetValue(UserName, MySoft);MessageBox.Show(注册成功);elseMessageBox.Show(注册码输入错误);else MessageBox.Show(请生成注册码,注册提示);