using System;
using System.Management; namespace SoftReg
{
internal class SoftReg
{
#region 变量
public int[] IntCode = new int[]; //存储密钥
public char[] CharCode = new char[]; //存储ASCII码
public int[] IntNumber = new int[]; //存储ASCII码值
#endregion #region 方法
/// <summary>
/// 初始化存储密钥
/// </summary>
public void SetIntCode()
{
for (int i = ; i < IntCode.Length; i++)
{
IntCode[i] = i % ;
}
} ///<summary>
/// 获取硬盘卷标号
///</summary>
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>
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>
/// 生成机器码(机器码由CPU序列号+硬盘卷标号合成)----可扩展
///</summary>
public string GetMNum()
{
string strNum = GetCpu() + GetDiskVolumeSerialNumber();
string strMNum = strNum.Substring(, ); //截取前24位作为机器码
return strMNum;
} ///<summary>
/// 生成注册码(根据本机机器码生成注册码)
///</summary>
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;
} ///<summary>
/// 生成注册码(根据传入的机器码生成注册码)
///</summary>
///<returns>机器码</returns>
public string GetRNum(string machineStr)
{
SetIntCode();
string strMNum = machineStr;
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;
}
#endregion
}
}

通过cpu SN码注册软件类的更多相关文章

  1. C#根据CPU+磁盘标号来注册软件

    很多私人软件都需要自己的作品出售给别人只能一台电脑使用,不可以随便一个电脑都可以运行自己的软件,所以就有了软件注册限制的控制,收集了一个注册软件的帮助类,分享记录一下. 功能介绍:    根据CPU+ ...

  2. Struts2 源码分析——Result类实例

    本章简言 上一章笔者讲到关于DefaultActionInvocation类执行action的相关知识.我们清楚的知道在执行action类实例之后会相关处理返回的结果.而这章笔者将对处理结果相关的内容 ...

  3. PC 端微信扫码注册和登录

    一.前言 先声明一下,本文所注重点为实现思路,代码及数据库设计主要为了展现思路,如果对代码效率有着苛刻要求的项目切勿照搬. 相信做过微信开发的人授权这块都没少做过,但是一般来说我们更多的是为移动端的网 ...

  4. 使用AnnotationConfigApplicationContext注册配置类

    1. AnnotationConfigApplicationContext功能 该类可以实现基于Java的配置类加载自定义在Spring的应用上下文的bean. 1.1 使用方式一:在构造方法中完成注 ...

  5. 使用spring配置类代替xml配置文件注册bean类

    spring配置类,即在类上加@Configuration注解,使用这种配置类来注册bean,效果与xml文件是完全一样的,只是创建springIOC容器的方式不同: //通过xml文件创建sprin ...

  6. .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类

    .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类 0x00 为什么要引入扩展方法 有的中间件功能比较简单,有的则比较复杂,并且依赖其它组件.除 ...

  7. (转载)Linux如何编译安装源码包软件

    一.什么是源码包软件: 顾名思义,源码包就是源代码的可见的软件包,基于Linux和BSD系统的软件最常见:在国内源可见的软件几乎绝迹:大多开源软件都是国外出品:在国内较为出名的开源软件有fcitx;l ...

  8. 中国电信大亚DP607光猫破解,设置路由,wifi!关闭远程管理,改连接限制,SN码查询!

    破解方法:以下为破解方法(一):1.进入192.168.1.12.用户名输入anonymous,密码不用,登陆3.输入网址192.168.1.1/backupsettings.conf4.用记事本打开 ...

  9. linux下源码安装软件

    在linux下的很多软件都是通过源码包方式发布的,这样做对于最终用户而言,虽然相对于二进制软件包,配置和编译起来繁琐点,但是它的可移植性却好得多,针对不同的体系结构,软件开发者往往仅需发布同一份源码包 ...

随机推荐

  1. MergeSort(归并排序)算法Java实现

    归并排序  归并排序 (merge sort) 是一类与插入排序.交换排序.选择排序不同的另一种排序方法.归并的含义是将两个或两个以上的有序表合并成一个新的有序表.归并排序有多路归并排序.两路归并排序 ...

  2. jquery easyui DataGrid 数据表格 属性

    用法 1.  <table id="tt"></table> 1.  $('#tt').datagrid({ 2.      url:'datagrid_d ...

  3. Yii2.0中文开发向导——Where条件查询全解析

    在Yii的Model里进行查询的时候 where是必不可少的.Where方法声明为 static where( $condition ) 其中参数 $condition类型为字符串或者数组 1.字符串 ...

  4. 十五、Java基础---------集合框架体系以及List

    在介绍集合之前先说一下数组,正如我们所知,数组是某一类型数据的集合,强调的是数据,而且必须单一:集合框架的不同之处在于存储的数据类型没有任何限制,既可以存储基本数据类型(会自动提升为相应的包装类)也可 ...

  5. s3c2440 移值u-boot-2016.03 第1篇 新建单板

    目前除RC版外,最新的就是 u-boot-2016.03.tar.bz2 ,大概看了几个年份的u-boot 发现,现在 更像是 linux kernel .有 menuconfig . 对比2012年 ...

  6. Dynamics AX 2012 R2 IIS WebSite Unauthorized 401

    今天,Reinhard部署好Aif Customer Service ,打开http://host:port/MicrosoftDynamicsAXAif60/,发现提示以下错误: 401 - Una ...

  7. angularJS ng-grid 配置

    以下是按我的需求修改的 简单的demo  可以自己扩展 HTML: <!DOCTYPE html> <html class="no-js" ng-app=&quo ...

  8. POJ 1113:Wall

    原文链接:https://www.dreamwings.cn/poj1113/2832.html Wall Time Limit: 1000MS   Memory Limit: 10000K Tota ...

  9. hdu 3966 Aragorn's Story 树链剖分 按点

    Aragorn's Story Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  10. [问题2014S02] 复旦高等代数II(13级)每周一题(第二教学周)

    问题2014S02  设实系数多项式 \begin{eqnarray*}f(x) &=& a_nx^n+a_{n-1}x^{n-1}+\cdots+a_1x+a_0, \\ g(x) ...