C#软件注册与注册机

news/2024/11/30 15:30:47/

(一)软件的实现:

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;}}
}

b4e28a3da4239ca926271f93760a7978.png

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();}}
}

注册窗体:

881fb101f53ba7d1fa536e2af8ec4f57.png

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;}}
}

6aa85eeb8ed23a689d88d57430e24a7f.png

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编程大全   


http://www.ppmy.cn/news/413970.html

相关文章

简单注册机 题解

需要配置安卓工具 Android Killer配置 Android Killer不再更新&#xff0c;需要自行修改配置来反编译一些高版本&#xff0c;比如本题 安装到雷电模拟器 放入Android Killer反编译 没有显示代码 点击查看Java代码 打开Main Activity找到关键代码 if (i 1){paramView &quo…

CleanMyMac最新2020注册机

作为CleanMyMac的升级版&#xff0c;它可以流畅地与系统性能相结合&#xff0c;静默清理、记录更新、清洁缓存、快速和安全删除、卸载应用程序和清空回收站等重要功能。节省硬盘空间&#xff0c;提高电脑的速度&#xff0c;CleanMyMac会使您的Mac更出色。   mac系统清理 清理…

win10 -- 注册机认为是病毒,死活不让下载 --那就关了它的自带杀毒软件

win10系统早就不需要所谓的杀毒软件了。 因为 他自己自带的杀毒软件早就帮你拒绝了&#xff0c;他认为所有可能侵犯你电脑的病毒。 但是&#xff0c;有的时候就很麻烦。 今天就讲一讲怎么关了它&#xff0c; 在搜索栏输入Windows 安全中心 点击安全行概览 点击管理设置 …

易语言注册机原理介绍

易语言注册机原理介绍&#xff1a; 介绍人&#xff1a;小白。 我个人总结下哈&#xff1a; 第一&#xff1a;你要又易语言基础&#xff0c;但是并不一定要专门去学习易语言。只需要学自己用到的就行了。这样的一般专业的教程都是有的。 第二&#xff1a; 就是你要有post基础。…

FPGA实现USB3.0 UVC 相机HDMI视频输出 基于FT602驱动 提供工程源码和QT上位机源码

目录 1、前言2、UVC简介3、FT602芯片解读4、我这儿的 FT601 USB3.0通信方案5、详细设计方案基于FT602的UVC模块详解 6、vivado工程详解7、上板调试验证8、福利&#xff1a;工程代码的获取 1、前言 目前USB3.0的实现方案很多&#xff0c;但就简单好用的角度而言&#xff0c;FT6…

go常用特性(embed、插件化开发)、常用包(并发)

go常用特性及常用包 1 常用特性 1.1 go:build //go:build !windows //go:build是前缀指令&#xff0c;!windows是逻辑判断的条件。这个指令的作用是在Windows系统外&#xff0c;编译当前源文件。// build !windows // build是前缀指令&#xff0c;!windows是编译标记。这个指…

ros中使用yolov5(1)

编辑器 提示&#xff1a;环境ubuntu18.04 anaconda下python3.8torch1.9 ros中使用yolov5 前言一、先将yolov5封装二、步骤1.创建一个新的脚本2.修改detect#修改yolov5/utils/dataset.py再次修改detect.py结果 前言 提示&#xff1a;参考的博客&#xff1a; 封装yolov5: https…

TRX和TRC10交易三种合约

在TRON中检测TRX或TRC10事务涉及3种类型的合约&#xff1a; TransferConract&#xff08;系统合同类型&#xff09;TransferAssetContract&#xff08;系统合同类型&#xff09;TriggerSmartContract&#xff08;智能合约类型&#xff09; Transaction&#xff0c;Transactio…