C#实现注册码的方法

本文实例讲述了C#实现注册码的方法。分享给大家供大家参考。具体如下:

开发软件时,当用到商业用途时,注册码与激活码就显得很重要了。现在的软件破解技术实在在强了,各种国内外大型软件都有注册机制,但同时也不断地被破解。下面发的只是一个常用版本,发出源码被破就更容易了,但我们学习的是技术。当然也为以后自己的软件不会被轻易破解。

第一步。根据卷标,CPU序列号,生成机器码

// 取得设备硬盘的卷标号
public static string GetDiskVolumeSerialNumber()
{
 ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
 ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid="d:"");
 disk.Get();
 return disk.GetPropertyValue("VolumeSerialNumber").ToString();
}
//获得CPU的序列号
public static string getCpu()
{
 string strCpu = null;
 ManagementClass myCpu = new ManagementClass("win32_Processor");
 ManagementObjectCollection myCpuConnection = myCpu.GetInstances();
 foreach (ManagementObject myObject in myCpuConnection)
 {
  strCpu = myObject.Properties["Processorid"].Value.ToString();
  break;
 }
 return strCpu;
}
//生成机器码
public static string getMNum()
{
 string strNum = getCpu() + GetDiskVolumeSerialNumber();//获得24位Cpu和硬盘序列号
 string strMNum = strNum.Substring(0, 24);//从生成的字符串中取出前24个字符做为机器码
 return strMNum;
}
public static int[] intCode = new int[127];//存储密钥
public static int[] intNumber = new int[25];//存机器码的Ascii值
public static char[] Charcode = new char[25];//存储机器码字
public static void setIntCode()//给数组赋值小于10的数
{
 for (int i = 1; i < intCode.Length; i++)
 {
  intCode[i] = i % 9;
 }
}

第二步。根据机器码 生成注册码

//生成注册码
public static string getRNum()
{
 setIntCode();//初始化127位数组
 for (int i = 1; i < Charcode.Length; i++)//把机器码存入数组中
 {
  Charcode[i] = Convert.ToChar(getMNum().Substring(i - 1, 1));
 }
 for (int j = 1; j < intNumber.Length; j++)//把字符的ASCII值存入一个整数组中。
 {
  intNumber[j] = intCode[Convert.ToInt32(Charcode[j])] + Convert.ToInt32(Charcode[j]);
 }
 string strAsciiName = "";//用于存储注册码
 for (int j = 1; j < intNumber.Length; j++)
 {
  if (intNumber[j] >= 48 && intNumber[j] <= 57)//判断字符ASCII值是否0-9之间
  {
   strAsciiName += Convert.ToChar(intNumber[j]).ToString();
  }
  else if (intNumber[j] >= 65 && intNumber[j] <= 90)//判断字符ASCII值是否A-Z之间
  {
   strAsciiName += Convert.ToChar(intNumber[j]).ToString();
  }
  else if (intNumber[j] >= 97 && intNumber[j] <= 122)//判断字符ASCII值是否a-z之间
  {
   strAsciiName += Convert.ToChar(intNumber[j]).ToString();
  }
  else//判断字符ASCII值不在以上范围内
  {
   if (intNumber[j] > 122)//判断字符ASCII值是否大于z
   {
    strAsciiName += Convert.ToChar(intNumber[j] - 10).ToString();
   }
   else
   {
    strAsciiName += Convert.ToChar(intNumber[j] - 9).ToString();
   }
  }
 }
 return strAsciiName;
}

第三步。检查注册状况,若没有注册,可自定义试用

/// <summary>
/// 检查注册
/// </summary>
private void CheckRegist()
{
  this.btn_reg.Enabled = true;
   RegistryKey retkey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("software", true).CreateSubKey("wxk").CreateSubKey("wxk.INI");
  foreach (string strRNum in retkey.GetSubKeyNames())//判断是否注册
  {
   if (strRNum == clsTools.getRNum())
   {
    thControl(true);
    return;
   }
  }
  thControl(false);
  Thread th2 = new Thread(new ThreadStart(thCheckRegist2));
  th2.Start();
 }
}
/// <summary>
/// 验证试用次数
/// </summary>
private static void thCheckRegist2()
{
 MessageBox.Show("您现在使用的是试用版,该软件可以免费试用3000000次!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
 Int32 tLong;
 try
 {
  tLong = (Int32)Registry.GetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\angel", "UseTimes", 0);
  MessageBox.Show("感谢您已使用了" + tLong + "次", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
 }
 catch
 {
  Registry.SetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\angel", "UseTimes", 0, RegistryValueKind.DWord);
  MessageBox.Show("欢迎新用户使用本软件", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
 }
 tLong = (Int32)Registry.GetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\angel", "UseTimes", 0);
 if (tLong < 3000000)
 {
  int Times = tLong + 1;
  Registry.SetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\angel", "UseTimes", Times);
 }
 else
 {
  MessageBox.Show("试用次数已到", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  Application.Exit();
 }
}

希望本文所述对大家的C#程序设计有所帮助。

(0)

相关推荐

  • C#实现生成mac地址与IP地址注册码的两种方法

    本文实例讲述了C#实现生成mac地址与IP地址注册码的两种方法,分享给大家供大家参考之用.具体方法如下: 方法一: using System; using System.Management; using System.Security.Cryptography; using System.IO; using System.Collections.Generic; using System.Text; namespace xingming_reg { class Program { static

  • C#操作windows注册表的方法

    本文实例讲述了C#操作windows注册表的方法.分享给大家供大家参考.具体如下: 此代码演示了如何读取和写入注册表 读取注册表: private string GetRegistShellData(string RegistName) { try { string registData, SubregistData; RegistryKey hkml = Registry.LocalMachine; RegistryKey software = hkml.OpenSubKey(@"SOFTWA

  • C#操作注册表的方法

    using Microsoft.Win32 ; 1.读取指定名称的注册表的值 复制代码 代码如下: private string GetRegistData(string name) { string registData; RegistryKey hkml = Registry.LocalMachine; RegistryKey software = hkml.OpenSubKey("SOFTWARE",true); RegistryKey aimdir = software.Ope

  • C#生成注册码的实例代码

    复制代码 代码如下: string t = DateTime.Now.Ticks.ToString(); t = DESKey.DESEncrypt(t, DESKey.DesKeyStr);            string[] strid = new string[t.Length];//            for (int i = 0; i < t.Length; i++)//把字符赋给数组            {                strid[i] = t.Subst

  • C# 注册表 操作实现代码

    其中第二级目录包含了五个预定义主键分别是:HKEY_CLASSES_ROOT,HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE,HKEY_USERS,HKEY_CURRENT_CONFIG. 下面我们来分别解释这5个类的作用 HKEY_CLASSES_ROOT该主键包含了文件的扩展名和应用程序的关联信息以及Window Shell和OLE用于储存注册表的信息.该主键下的子键决定了在WINDOWS中如何显示该类文件以及他们的图标,该主键是从HKEY_LCCAL_MACHIN

  • c#注册表操作类分享

    复制代码 代码如下: /// <summary>/// 注册表基项静态域/// /// 主要包括:/// 1.Registry.ClassesRoot 对应于HKEY_CLASSES_ROOT主键/// 2.Registry.CurrentUser 对应于HKEY_CURRENT_USER主键/// 3.Registry.LocalMachine 对应于 HKEY_LOCAL_MACHINE主键/// 4.Registry.User 对应于 HKEY_USER主键/// 5.Registry.

  • 使用C#在注册表中保存信息的例子

    写出来,方便记忆,以后要用,可以直接改改就能用. 复制代码 代码如下: using System; namespace Backend{    public class RegistryStorage    {        public static PageVisibility OpenAfterStart()        {            Microsoft.Win32.RegistryKey registryKey;            PageVisibility visi

  • C#软件注册码的实现代码

    第一步.根据卷标,CPU序列号,生成机器码 复制代码 代码如下: // 取得设备硬盘的卷标号        public static string GetDiskVolumeSerialNumber()        {            ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");            ManagementObject disk = new Mana

  • C#实现注册码的方法

    本文实例讲述了C#实现注册码的方法.分享给大家供大家参考.具体如下: 开发软件时,当用到商业用途时,注册码与激活码就显得很重要了.现在的软件破解技术实在在强了,各种国内外大型软件都有注册机制,但同时也不断地被破解.下面发的只是一个常用版本,发出源码被破就更容易了,但我们学习的是技术.当然也为以后自己的软件不会被轻易破解. 第一步.根据卷标,CPU序列号,生成机器码 // 取得设备硬盘的卷标号 public static string GetDiskVolumeSerialNumber() { M

  • 不使用myeclipse注册机得到myeclipse注册码的方法(myeclipse序列号)

    复制代码 代码如下: import java.io.BufferedReader;    import java.io.IOException;    import java.io.InputStreamReader;    public class MyEclipseGen {    private static final String LL = "Decompiling this copyrighted software is a violation of both your licens

  • IntelliJ Idea 2017注册码免费激活方法

    IDEA 全称 IntelliJ IDEA,是Java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手.代码自动提示.重构.J2EE支持.各类版本工具(Git.svn.github等).JUnit.CVS整合.代码分析. 创新的GUI设计等方面的功能可以说是超常的.IDEA是JetBrains公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主.它的旗舰版本还支持HTML,CSS,PHP,MySQL,Python等

  • 分享最新Sublime Text4 Build 4107注册码(密钥)汉化及完美永久破解方法

    使用Sublime Text做开发工具的小伙伴又有版本可以更新啦! 费话不多说先把Sublime Text4注册码贴出来 Sublime Text4注册码(密钥) ----- BEGIN LICENSE ----- TwitterInc 200 User License EA7E-890007 1D77F72E 390CDD93 4DCBA022 FAF60790 61AA12C0 A37081C5 D0316412 4584D136 94D7F7D4 95BC8C1C 527DA828 560

  • PL/SQL Developer过期的两种解决方法

    方法一: 1.首先,登陆PL/SQL Developer,PL/SQL Developer要到期了 2.输入指令"regedit"打开注册表,如图所示 3.然后,在注册表里按HKEY_CURRENT_USER\Software\Allround Automations 这个路径找到"Allround Automations ",然后删除它. 4.删除上一步中的后,在找到HKEY_CURRENT_USER\Software\Microsoft\Security,删除&

  • du meter注册码包括3.5与4.0(所有版本通用)

    du meter du meter 4.0(通用于所有版本) 注册码 DU Meter 是显示直观的网络流量监视器,既有数字显示又有图形显示.让你清楚的看到浏览时以及上传下载时的数据传输情况,实时监测你的上传和下载的网速.新版增加了观测日流量.周流量.月流量等累计统计数据,并可导出为多种文件格式. DU Meter 注册码(通用于所有版本) 注册名:www.cnzz.cc 注册码:D3-CRR-02ACBE28-7FAA462C du meter 注册码_du meter 3.5 sn DU M

  • 一些小技巧与常见问题解决方法

    1.当你得到管理员密码却又无法找到后台时不妨试试google.输入site:xxx.com intext:admin        / *意思是查找网址包含xxx.com 文字中包含admin的所有网页*/   或site:xxx.com inurl:admin /* 查询地址中包含admin的链接*/   site:xxx.com intitle:admin /* 查询tittle中包含admin的链接*/.你可以把admin换为你所知道的一些与后台有关的关键字,如"管理员登录"&q

  • 收藏的几个超级巡警注册码 超级巡警序列号

    一直以来,我们为了让用户使用体验最新版本,对软件进行了时间限制,在到期后会提示未注册.针对这种情况,广大用户只要下载新版本即可,或者使用我们提供的注册码重新注册. 我们在新版中已经内置了终身的超级巡警序列号,为了让愿意使用旧版本的老用户继续使用,我们提供一个无日期限制的注册码,如下: 0MF+rx+XUiQ/2h6CkJE8CAU5w4J17SDC14TXYs0QtjMAlHzGb85L9hKG5jpJt9ryblgXVshzD2vHza3kMVQhXJ1xFV1y IFEJVASW7oY2IM

  • WINRAR注册码 全版本通用 要得快

    WinRAR 4.20 beta2注册文件 WinRAR 4.20 beta2 working key ================================================= RAR registration data wncn Unlimited Company License UID=1b064ef8b57de3ae9b52 64122122509b52e35fd885373b214a4a64cc2fc1284b77ed14fa20 66ebfca6509f981

随机推荐