先看界面

软件的实现:

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.09.30 bzoj3551:Peaks加强版(dfs序+主席树+倍增+kruskal重构树)

    传送门 一道考察比较全面的题. 这道题又用到了熟悉的kruskal+倍增来查找询问区间的方法. 查到询问的子树之后就可以用dfs序+主席树统计答案了. 代码: #include<bits/std ...

  2. 2018.09.27 bzoj2118: 墨墨的等式(最短路+背包)

    传送门 好题啊. 首先找到最小的一个非零系数记做a1a_1a1​,然后如果WWW modmodmod a1=W′a_1=W'a1​=W′ modmodmod a1a_1a1​,且WWW是方程的一个可行 ...

  3. Django入门与实践-第13章:表单处理(完结)

    http://127.0.0.1:8000/boards/1/ http://127.0.0.1:8000/boards/2/ http://127.0.0.1:8000/boards/3/ http ...

  4. 【Unity】2.0 第2章 Unity编辑器和基本操作

    分类:Unity.C#.VS2015 创建日期:2016-03-26 本章要点: 1.掌握Unity 5.3.4编辑器视图和菜单项及其含义,这是入门的最基础部分,必须掌握. 2.了解最基本的操作,先学 ...

  5. UVa 11292 Dragon of Loowater (水题,排序)

    题意:有n个条龙,在雇佣勇士去杀,每个勇士能力值为x,只能杀死头的直径y小于或等于自己能力值的龙,只能被雇佣一次,并且你要给x赏金,求最少的赏金. 析:很简单么,很明显,能力值高的杀直径大的,低的杀直 ...

  6. spring @Transactional 声明式事务

    项目地址:git@github.com:witaste/transaction-annotation.git 情景一: A external method calls a method of the ...

  7. 12) maven-compiler-plugin

    The Compiler Plugin is used to compile the sources of your project. At present the default source se ...

  8. Yarn application has already exited with state FINISHED

    如果在运行spark-sql时遇到如下这样的错误,可能是因为yarn-site.xml中的配置项yarn.nodemanager.vmem-pmem-ratio值偏小,它的默认值为2.1,可以尝试改大 ...

  9. C++ 11可变参数接口设计在模板编程中应用的一点点总结

    概述 本人对模板编程的应用并非很深,若要用一句话总结我个人对模板编程的理解,我想说的是:模板编程是对类定义的弱化. 如何理解“类定义的弱化”? 一个完整的类有如下几部分组成: 类的名称: 类的成员变量 ...

  10. Paxos与zookeeper

    1,什么是Paxos算法? Paxos算法是分布式计算领域中一个非常重要的算法,主要解决分布式系统如何就某个值(决议)达成一致的问题.一个典型的场景是分布式数据库的一致问题:如果分布式数据库的各个节点 ...