(一)软件的实现:

SoftReg类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Management;
using System.Text;
using System.Threading.Tasks;namespace WindowsFormsApp16
{class SoftReg{///<summary>/// 获取硬盘卷标号///</summary>///<returns></returns>public string GetDiskVolumeSerialNumber(){ManagementClass mc = new ManagementClass("win32_NetworkAdapterConfiguration");ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"c:\"");disk.Get();return disk.GetPropertyValue("VolumeSerialNumber").ToString();}///<summary>/// 获取CPU序列号///</summary>///<returns></returns>public string GetCpu(){string strCpu = null;ManagementClass myCpu = new ManagementClass("win32_Processor");ManagementObjectCollection myCpuCollection = myCpu.GetInstances();foreach (ManagementObject myObject in myCpuCollection){strCpu = myObject.Properties["Processorid"].Value.ToString();}return strCpu;}///<summary>/// 生成机器码///</summary>///<returns></returns>public string GetMNum(){string strNum = GetCpu() + GetDiskVolumeSerialNumber();string strMNum = strNum.Substring(0, 24);    //截取前24位作为机器码return strMNum;}public int[] intCode = new int[127];    //存储密钥public char[] charCode = new char[25];  //存储ASCII码public int[] intNumber = new int[25];   //存储ASCII码值//初始化密钥public void SetIntCode(){for (int i = 1; i < intCode.Length; i++){intCode[i] = i % 9;}}///<summary>/// 生成注册码///</summary>///<returns></returns>public string GetRNum(){SetIntCode();string strMNum = GetMNum();for (int i = 1; i < charCode.Length; i++)   //存储机器码{charCode[i] = Convert.ToChar(strMNum.Substring(i - 1, 1));}for (int j = 1; j < intNumber.Length; j++)  //改变ASCII码值{intNumber[j] = Convert.ToInt32(charCode[j]) + intCode[Convert.ToInt32(charCode[j])];}string strAsciiName = "";   //注册码for (int k = 1; k < intNumber.Length; k++)  //生成注册码{if ((intNumber[k] >= 48 && intNumber[k] <= 57) || (intNumber[k] >= 65 && intNumber[k]<= 90) || (intNumber[k] >= 97 && intNumber[k] <= 122))  //判断如果在0-9、A-Z、a-z之间{strAsciiName += Convert.ToChar(intNumber[k]).ToString();}else if (intNumber[k] > 122)  //判断如果大于z{strAsciiName += Convert.ToChar(intNumber[k] - 10).ToString();}else{strAsciiName += Convert.ToChar(intNumber[k] - 9).ToString();}}return strAsciiName;}}
}

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;using System.Management;    //需要引用System.Management.dll
using Microsoft.Win32;namespace WindowsFormsApp16
{public partial class mainForm : Form{public mainForm(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){}private void mainForm_Load(object sender, EventArgs e){//判断软件是否注册RegistryKey retkey = Registry.CurrentUser.OpenSubKey("SOFTWARE", true).CreateSubKey("mySoftWare").CreateSubKey("Register.INI");foreach (string strRNum in retkey.GetSubKeyNames()){if (strRNum == softReg.GetRNum()){this.labRegInfo.Text = "此软件已注册!";this.btnReg.Enabled = false;return;}}this.labRegInfo.Text = "此软件尚未注册!";this.btnReg.Enabled = true;MessageBox.Show("您现在使用的是试用版,可以免费试用30次!", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);Int32 tLong;    //已使用次数try{tLong = (Int32)Registry.GetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\mySoftWare", "UseTimes", 0);MessageBox.Show("您已经使用了" + tLong + "次!", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);}catch{MessageBox.Show("欢迎使用本软件!", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);Registry.SetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\mySoftWare", "UseTimes", 0, RegistryValueKind.DWord);}//判断是否可以继续试用tLong = (Int32)Registry.GetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\mySoftWare", "UseTimes", 0);if (tLong < 30){int tTimes = tLong + 1;Registry.SetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\mySoftWare", "UseTimes", tTimes);}else{DialogResult result = MessageBox.Show("试用次数已到!您是否需要注册?", "信息", MessageBoxButtons.YesNo, MessageBoxIcon.Information);if (result == DialogResult.Yes){FormRegister.state = false; //设置软件状态为不可用btnReg_Click(sender, e);    //打开注册窗口}else{Application.Exit();}}}SoftReg softReg = new SoftReg();private void btnClose_Click(object sender, EventArgs e){Application.Exit();}private void btnReg_Click(object sender, EventArgs e){FormRegister frmRegister = new FormRegister();frmRegister.ShowDialog();}}
}

注册窗体:

using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace WindowsFormsApp16
{public partial class FormRegister : Form{public FormRegister(){InitializeComponent();}public static bool state = true;  //软件是否为可用状态SoftReg softReg = new SoftReg();private void btnReg_Click(object sender, EventArgs e){try{if (txtLicence.Text == softReg.GetRNum()){MessageBox.Show("注册成功!重启软件后生效!", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);RegistryKey retkey = Registry.CurrentUser.OpenSubKey("Software", true).CreateSubKey("mySoftWare").CreateSubKey("Register.INI").CreateSubKey(txtLicence.Text);retkey.SetValue("UserName", "Rsoft");this.Close();}else{MessageBox.Show("注册码错误!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);txtLicence.SelectAll();}}catch (Exception ex){throw new Exception(ex.Message);}}private void btnClose_Click(object sender, EventArgs e){if (state == true){this.Close();}else{Application.Exit();}}private void FormRegister_Load(object sender, EventArgs e){this.txtHardware.Text = softReg.GetMNum();}}
}

(二)注册机的实现:

SoftReg类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace WindowsFormsApp17
{class SoftReg{public int[] intCode = new int[127];    //存储密钥public char[] charCode = new char[25];  //存储ASCII码public int[] intNumber = new int[25];   //存储ASCII码值//初始化密钥public void SetIntCode(){for (int i = 1; i<intCode.Length; i++){intCode[i] = i % 9;}}///<summary>/// 生成注册码///</summary>///<returns></returns>public string GetRNum(string strMNum){SetIntCode();for (int i = 1; i<charCode.Length; i++)   //存储机器码{charCode[i] = Convert.ToChar(strMNum.Substring(i - 1, 1));}for (int j = 1; j<intNumber.Length; j++)  //改变ASCII码值{intNumber[j] = Convert.ToInt32(charCode[j]) + intCode[Convert.ToInt32(charCode[j])];}string strAsciiName = "";   //注册码for (int k = 1; k<intNumber.Length; k++)  //生成注册码{if ((intNumber[k] >= 48 && intNumber[k] <= 57) || (intNumber[k] >= 65 && intNumber[k]<= 90) || (intNumber[k] >= 97 && intNumber[k] <= 122))  //判断如果在0-9、A-Z、a-z之间{strAsciiName += Convert.ToChar(intNumber[k]).ToString();}else if (intNumber[k] > 122)  //判断如果大于z{strAsciiName += Convert.ToChar(intNumber[k] - 10).ToString();}else{strAsciiName += Convert.ToChar(intNumber[k] - 9).ToString();}}return strAsciiName;}}
}

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace WindowsFormsApp17
{public partial class mainForm : Form{public mainForm(){InitializeComponent();}private void mainForm_Load(object sender, EventArgs e){}SoftReg softReg = new SoftReg();private void btnCreate_Click(object sender, EventArgs e){try{string strHardware = this.txtHardware.Text;string strLicence = softReg.GetRNum(strHardware);this.txtLicence.Text = strLicence;}catch (System.Exception ex){MessageBox.Show("输入的机器码格式错误!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);}  }private void btnExit_Click(object sender, EventArgs e){Application.Exit();}}
}

参考链接:

https://www.cnblogs.com/hanzhaoxin/archive/2013/01/04/2844191.html

源码百度网盘下载地址:

链接:https://pan.baidu.com/s/19ln2p3XuV_pAOyjTnY5Tyw

提取码:lmy1

技术群: 需要进技术群学习交流的请添加小编微信,切记备注:加群,对以上内容有什么疑问也可以直接和小编直接沟通交流!

小编微信:mm1552923

公众号:dotNet编程大全

C#软件注册与注册机相关推荐

  1. 一个软件的MD5注册算法

    一个软件的MD5注册算法 安全中国 www.anqn.com 更新时间:2007-9-27 20:58:00 责任编辑:池天 热 点: [破文作者]   落魄浪子 [文章题目]   失败的MD5算法 ...

  2. Dubbo注册中心宕机

    注册中心宕机 高可用 通过设计,减少系统不能提供服务的时间 zookeeper注册中心宕机 还可以消费dubbo暴露的服务 健壮性 监控中心宕掉 不影响使用,只是丢失部分采样数据 数据库宕掉 注册中心 ...

  3. 怎么清理ug10注册表_最专业的软件卸载利器:不仅可卸载顽固软件,还能清理软件残留和注册表垃圾...

    相信小伙伴们一定也遇到过一些怎么也卸载不掉的流氓顽固软件,有些顽固软件甚至在在电脑"控制面板"中的"添加或者卸载程序"里没有显示,还有就是卸载了,但是系统还是有 ...

  4. 彻底删除软件,删除注册列表信息

    彻底删除软件,删除注册列表信息 删除软件后,可能会有残留的注册信息,通过删除注册表来完成删除的注册信息. P.S. 在删除注册列表信前,请做好备份,以免系统崩溃 1.Win+R:输入regedit 2 ...

  5. CCleaner软件清理系统注册表技巧

    在电脑系统中总会有一些烦人的注册表垃圾文件,这些注册表垃圾文件不仅占用空间有限的系统内存,也会影响电脑系统的运行速度,而CCleaner软件能够有效清理电脑系统中不同类型的注册表文件. 接下来,软发网 ...

  6. 注册中心宕机能否继续通讯?

    全部宕机能否继续通讯 ? 可以,启动 dubbo时,消费者会从注册中心拉取注册的生产者的地址接口等数据,缓存在本地,每次调用时都按照本地存储的地址进行调用,看架构流程中的第 4 步 注册中心对等集群, ...

  7. 软件测试之系统注册/登录功能测试

    软件测试之系统注册/登录功能测试 **写在前面:测试不是一种目的,而是一种保证软件质量的手段** 根据工作中对系统注册/登录功能的测试经验,粗略总结了一下系统登录/注册功能测试的思路,如下: PS:在 ...

  8. php ado 建立注册,如何注册ADO与DAO [Access软件网]

    正 文: 用Access数据库制作过程中会遇到 ActiveX 组件无法创建对象等错误提示,此问题是由于有的OFFICE用户可能ADO2.1和DAO3.6没有注册,手动注册的方法如下: 一.注册ADO ...

  9. 执行虚拟化软件测试程序的物理机,虚拟化技术试题教案.docx

    PAGE 第 PAGE 7 页,共 NUMPAGES 7 页 北京信息职业技术学院2006-4-17< FILLIN "请输入课程名称,该名称应与任务书中的相同" \* ME ...

  10. 网易邮箱大师如何注册邮箱 注册邮箱方法步骤介绍

    网易邮箱大师是款高效强大的全平台邮箱客户端,支持所有邮箱登录,功能强大,一个PC端就能登录多个邮箱,很多小伙伴不知道如何注册登录邮箱,那么就跟着小编一起来看看如何操作吧. 操作步骤如下: 1.打开网易 ...

最新文章

  1. 终于把论文Check完了
  2. 政务大数据共享难题的破解路径有哪些?
  3. 解决Android中多次点击启动多个相同界面的问题
  4. python在哪下载-python在哪里下载
  5. 类的初始化列表_探索未知种族之osg类生物---渲染遍历之draw函数二
  6. python怎么创建文件夹_如何使用python在文件夹中创建文本文件?
  7. RelativeDateFormat时间计算工具类
  8. 服务连接不上nacos集群_Rust 微服务实践: 连接 rust , nacos , spring cloud
  9. 区块链教程(五):合约编写实战实例
  10. bootstrap ie兼容
  11. 概率扩散模型 Probabilistic Diffusion Model
  12. 计算机鼠标左右键作用,win7电脑鼠标右键有什么功能和作用
  13. B站视频缓存 音频和视频批量合并
  14. shopex mysql索引_mysql版本太高导致shopex4.8.5无法安装
  15. EnhancedFor
  16. CSS3-设置基本边框和背景
  17. java发送电子邮件
  18. 基于opencv的倾斜文本行的校正
  19. CCPC 1010 YJJ's Salesman
  20. 计算机工程与网络学术会议,2015第五届计算机工程与网络国际学术会议

热门文章

  1. 漏洞复现-——通达OA任意用户登陆漏洞
  2. SI4463配置软件wds3
  3. QTableView 常用功能总结
  4. C# Ftp创建文件夹
  5. CEEMDAN算法及其应用
  6. uni-app项目部署 打包 运行
  7. 推荐系统实践 - 02利用用户行为数据
  8. 大学“电路分析基础”试题合集第八章
  9. 下载dns linux命令,linux dns 部署命令(示例代码)
  10. 一张表实现固定表头和锁定列