先看界面

软件的实现:

SoftReg类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Management; //需要引用System.Management.dll namespace SoftRegister
{
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(, ); //截取前24位作为机器码
return strMNum;
} public int[] intCode = new int[]; //存储密钥
public char[] charCode = new char[]; //存储ASCII码
public int[] intNumber = new int[]; //存储ASCII码值 //初始化密钥
public void SetIntCode()
{
for (int i = ; i < intCode.Length; i++)
{
intCode[i] = i % ;
}
} ///<summary>
/// 生成注册码
///</summary>
///<returns></returns>
public string GetRNum()
{
SetIntCode();
string strMNum = GetMNum();
for (int i = ; i < charCode.Length; i++) //存储机器码
{
charCode[i] = Convert.ToChar(strMNum.Substring(i - , ));
}
for (int j = ; j < intNumber.Length; j++) //改变ASCII码值
{
intNumber[j] = Convert.ToInt32(charCode[j]) + intCode[Convert.ToInt32(charCode[j])];
}
string strAsciiName = ""; //注册码
for (int k = ; k < intNumber.Length; k++) //生成注册码
{ if ((intNumber[k] >= && intNumber[k] <= ) || (intNumber[k] >= && intNumber[k]
<= ) || (intNumber[k] >= && intNumber[k] <= )) //判断如果在0-9、A-Z、a-z之间
{
strAsciiName += Convert.ToChar(intNumber[k]).ToString();
}
else if (intNumber[k] > ) //判断如果大于z
{
strAsciiName += Convert.ToChar(intNumber[k] - ).ToString();
}
else
{
strAsciiName += Convert.ToChar(intNumber[k] - ).ToString();
}
}
return strAsciiName;
}
}
}

调用方法:

SoftReg softReg = new SoftReg(); //实例化一个
string aa= softReg.GetMNum();

主窗体:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Win32; namespace SoftRegister
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
SoftReg softReg = new SoftReg(); private void FormMain_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", );
MessageBox.Show("您已经使用了" + tLong + "次!", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch
{
MessageBox.Show("欢迎使用本软件!", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
Registry.SetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\mySoftWare", "UseTimes", , RegistryValueKind.DWord);
} //判断是否可以继续试用
tLong = (Int32)Registry.GetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\mySoftWare", "UseTimes", );
if (tLong < )
{
int tTimes = tLong + ;
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();
}
} } private void btnClose_Click(object sender, EventArgs e)
{
Application.Exit();
} private void btnReg_Click(object sender, EventArgs e)
{
FormRegister frmRegister = new FormRegister();
frmRegister.ShowDialog();
}
}
}

注册机的实现:

SoftReg类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Management; namespace SoftwarePassport
{
class SoftReg
{
public int[] intCode = new int[]; //存储密钥
public char[] charCode = new char[]; //存储ASCII码
public int[] intNumber = new int[]; //存储ASCII码值 //初始化密钥
public void SetIntCode()
{
for (int i = ; i < intCode.Length; i++)
{
intCode[i] = i % ;
}
} ///<summary>
/// 生成注册码
///</summary>
///<returns></returns>
public string GetRNum(string strMNum)
{
SetIntCode(); for (int i = ; i < charCode.Length; i++) //存储机器码
{
charCode[i] = Convert.ToChar(strMNum.Substring(i - , ));
}
for (int j = ; j < intNumber.Length; j++) //改变ASCII码值
{
intNumber[j] = Convert.ToInt32(charCode[j]) + intCode[Convert.ToInt32(charCode[j])];
}
string strAsciiName = ""; //注册码
for (int k = ; k < intNumber.Length; k++) //生成注册码
{ if ((intNumber[k] >= && intNumber[k] <= ) || (intNumber[k] >= && intNumber[k]
<= ) || (intNumber[k] >= && intNumber[k] <= )) //判断如果在0-9、A-Z、a-z之间
{
strAsciiName += Convert.ToChar(intNumber[k]).ToString();
}
else if (intNumber[k] > ) //判断如果大于z
{
strAsciiName += Convert.ToChar(intNumber[k] - ).ToString();
}
else
{
strAsciiName += Convert.ToChar(intNumber[k] - ).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.Windows.Forms; namespace SoftwarePassport
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
} 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();
}
}
}

C#:注册机的实现的更多相关文章

  1. PostSharp 4.0注册机实现过程

    PostSharp是基于.NET平台设计的比较强调易学易用的AOP框架. 什么是AOP? http://wayfarer.cnblogs.com/articles/241024.html 新版的已失效 ...

  2. Webstorm 10 for mac osx 注册机,序列号,kegen

    小菜最近get到mac体验机会,早就耳闻mac非常适合做开发,于是迫不及待的安装各种开发工具,不知不觉,轮到前端开发神器webstorm了,看了一下官网的价格,心拔凉拔凉的. 果断搜索注册机,搜到的结 ...

  3. Flash Builder 4.7 注册机完美激活方法

    Flash Builder 4.7 破解注册方法目前较为通用的三种方法: 第一种:三步修改配置文件方法,这种有开发者反应这种方法在升级和创建纯 AS 项目时会存在问题,但我懒的去试这种方法的主要原因是 ...

  4. 转:Autodesk 2017软件下载+注册机+破解方法(持续更新)

    转载自http://blog.sina.com.cn/s/blog_710225790102w03e.html Autodesk 2017安装步骤: 安装Autodesk 2017相关软件 使用序列号 ...

  5. UltraEdit 注册机使用说明

    请断开网络连接(或直接拔掉网线)后执行: 安装完成后,点击弹出界面的“注册”按钮,然后直接点击“激活”,此时UltraEdit检测到网络断开则弹出界面提示“脱机激活”,此时启动注册机,并将UltraE ...

  6. 【转】破解Source Insight 3.5.0072过程 附:安装软件+注册机

    转载地址:http://blog.csdn.net/qs_hud/article/details/8884867 注册机及软件下载地址:http://download.csdn.net/detail/ ...

  7. HTTP抓包神器HTTP Analyzer V7 Build7.5.4汉化+注册机

    原版安装包.汉化文件.注册机下载:http://pan.baidu.com/s/1bMv1Si 密码:cqq1 一.安装:下载并安装英文原版  下载页面:http://www.ieinspector. ...

  8. ERWin 7.2下载安装及注册机

    ERWin 7.2下载安装及注册机   ERWin 7.2 下载地址: ftp://ftp.ca.com/CAproducts/erwin/ServicePacks/AFEDM72-b1644.exe ...

  9. C#:注册机的实现【提供源代码下载】

    代码下载 C#软件注册机 软件运行结果 参考文章 http://www.cnblogs.com/hanzhaoxin/archive/2013/01/04/2844191.html

  10. Resharper注册机实现以及源代码

    一直用Resharper,每次找注册机也麻烦,就想怎么才能自己能做个注册机,把它原理给搞懂了,不就不用找了.今天早上起来研究了下Resharper注册机,网上找到一位大神之前做Resharper注册机 ...

随机推荐

  1. 2018.07.22 洛谷P3047附近的牛(树形dp)

    传送门 给出一棵n" role="presentation" style="position: relative;">nn个点的树,每个点上有C ...

  2. 着重基础之—Spring Boot 编写自己的过滤器

    Spring Boot 编写自己的"过滤器" 又好久没有写博客进行总结了,说实话,就是 "懒",懒得总结,懒得动.之所以写这篇博客,是因为最近对接公司SSO服务的时候,需要自定义拦 ...

  3. Map的常用操作

    public static void main(String[] args) { Map<String, String> map = new HashMap<>(); map. ...

  4. SceneControl+AE+鼠标滚轮缩放

    要为SceneControl设置鼠标滚轮缩放必须定义委托,因为SceneControl没有Wheel事件,所以委托From的Wheel事件 public Form1() { InitializeCom ...

  5. PAT甲 1007. Maximum Subsequence Sum (25) 2016-09-09 22:56 41人阅读 评论(0) 收藏

    1007. Maximum Subsequence Sum (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Y ...

  6. How Many Tables HDOJ

    How Many Tables Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  7. Americans are usually tolerant (Listen speak of Unit 2)

    Americans are usually 1) tolerant of non-native speakers who have some 2) trouble understanding Engl ...

  8. 高并发Web

    hadoop适合处理分布式集群系统,本身是支持高速并发海量数据的写入和读取的.解决大量用户并发访问的方案有很多,给你个千万pv的参考方案:1)架构中直接引入软件名称的模块,是个人推荐使用的,如Hapr ...

  9. MAC将 /etc/sudoers文件修改错后的几种解决方法

    文件修改错误后难以再次修改的原因: 1.修改此文件必须是root权限 2.此文件出现问题时sudo命令不可用 3.默认情况下MAC系统不启用root用户 解决的方法: 一.启用root用户,使用roo ...

  10. Mina Session

    Chapter 4 - Session The Session is at the heart of MINA : every time a client connects to the server ...