設計軟件注冊之一網卡序列號


根據網卡序列號設計軟件注冊

通過注冊軟件獲取本機網卡序列號,然后通過網卡序列號、隨機數及指定算法生成注冊碼,最后將注冊碼寫入注冊表。

 

  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.Linq;
  7 using System.Text;
  8 using System.Windows.Forms;
  9 using System.Management;
 10 
 11 namespace 利用網卡序列號設計軟件注冊程序
 12 {
 13     public partial class Form1 : Form
 14     {
 15         public Form1()
 16         {
 17             InitializeComponent();
 18         }
 19 
 20         private void Form1_Load(object sender, EventArgs e)
 21         {
 22             label3.Text = Environment.MachineName.ToString();
 23             label4.Text = GetNetCardMacAddress();
 24         }
 25         public string GetNetCardMacAddress() 
 26         {
 27             //實例化MangementClass對象。
 28             ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
 29             //創建ManagementObjectCollection對象。
 30             ManagementObjectCollection moc = mc.GetInstances();
 31             string str = "";
 32             foreach (ManagementObject mo in moc)//遍歷所得的集合
 33             {
 34                 if ((bool)mo["IPEnabled"]==true)
 35                 {
 36                     str=mo["MacAddress"].ToString();
 37                 }
 38               
 39             }  return str;
 40 
 41         }
 42 
 43         string[] strLanCode = new string[12];//網卡信息存儲。
 44         string[] strKey = { "Q","W","7","E","D","F","2","G","R","T","Y","8","P",
 45                                   "N","B","V","C","X","Z","0","9","I","8","6","U","O",
 46                                   "P","M","5","4","3","1","A","S","H","J","K","L"};
 47         public int intRand = 0;
 48         private void button1_Click(object sender, EventArgs e)
 49         {
 50             string strCode = GetNetCardMacAddress();
 51             strCode = strCode.Substring(0, 2) + strCode.Substring(3, 2) + strCode.Substring(6, 2)
 52                 + strCode.Substring(9, 2) + strCode.Substring(12, 2) + strCode.Substring(15, 2);
 53             string strb = strCode.Substring(0, 4) + strCode.Substring(4, 4) + strCode.Substring(8,4);
 54             for (int i = 0; i < strLanCode.Length; i++)
 55             {
 56                 strLanCode[i] = strb.Substring(i,1);//把網卡信息存入數組。
 57 
 58             }
 59             Random ra = new Random();
 60             switch (intRand)
 61             {
 62                 case 0:
 63                     label5.Text = strCode.Substring(0, 4) + "-" + strCode.Substring(4, 4) + "-" + strCode.Substring(8, 4) + "-" +
 64                         strKey[ra.Next(0, 37)].ToString() + strKey[ra.Next(0, 37)].ToString() + strKey[ra.Next(0, 37)].ToString() +
 65                         strKey[ra.Next(0, 37)].ToString();//生成隨機注冊碼。
 66                     intRand = 1;
 67                     break;
 68                 case 1:
 69                     label5.Text = strCode.Substring(0, 4) + "-" + strCode.Substring(4, 4) + "-" + strLanCode[ra.Next(0, 11)] + 
 70                         strLanCode[ra.Next(0, 11)] + strLanCode[ra.Next(0, 11)] + strLanCode[ra.Next(0, 11)] + "-" +
 71                         strKey[ra.Next(0, 37)].ToString() + strKey[ra.Next(0, 37)].ToString() + strKey[ra.Next(0, 37)].ToString() +
 72                         strKey[ra.Next(0, 37)].ToString();//生成隨機注冊碼。
 73                     intRand = 2;
 74                     break;
 75                 case 2:
 76                     label5.Text = strCode.Substring(0, 4) + "-" + strLanCode[ra.Next(0, 11)] + strLanCode[ra.Next(0, 11)] + 
 77                         strLanCode[ra.Next(0, 11)] + strLanCode[ra.Next(0, 11)] + "-" + strLanCode[ra.Next(0, 11)] + strLanCode[ra.Next(0, 11)] +
 78                         strLanCode[ra.Next(0, 11)] + strLanCode[ra.Next(0, 11)]+ "-" +strKey[ra.Next(0, 37)].ToString() + 
 79                         strKey[ra.Next(0, 37)].ToString() + strKey[ra.Next(0, 37)].ToString() +
 80                         strKey[ra.Next(0, 37)].ToString();//生成隨機注冊碼。
 81                     intRand = 3;
 82                     break;
 83                 case 3:
 84                     label5.Text = strLanCode[ra.Next(0, 11)] + strLanCode[ra.Next(0, 11)] + strLanCode[ra.Next(0, 11)] + strLanCode[ra.Next(0, 11)] +"-"+
 85                         strLanCode[ra.Next(0,11)]+strLanCode[ra.Next(0,11)]+strLanCode[ra.Next(0,11)]+strLanCode[ra.Next(0,11)]+"-"+
 86                         strLanCode[ra.Next(0,11)]+strLanCode[ra.Next(0,11)]+strLanCode[ra.Next(0,11)]+strLanCode[ra.Next(0,11)]+"-"+
 87                         strKey[ra.Next(0, 37)].ToString() + strKey[ra.Next(0, 37)].ToString() + strKey[ra.Next(0, 37)].ToString() +
 88                         strKey[ra.Next(0, 37)].ToString();//生成隨機注冊碼。
 89                     intRand = 0;
 90                     break;
 91             }
 92         }
 93 
 94         private void button2_Click(object sender, EventArgs e)
 95         {
 96             //注冊按鈕
 97             if (label5.Text=="")
 98             {
 99                 MessageBox.Show("請生成注冊碼!","提示");
100             }
101             else
102             {
103                 string strNameKey = textBox1.Text.TrimEnd()+ textBox2.Text.TrimEnd()+
104                     textBox3.Text.TrimEnd()  + textBox4.Text.TrimEnd();//獲取輸入的注冊碼。
105                 string strNumber = label5.Text.Substring(0,4) + label5.Text.Substring(5,4) +
106                     label5.Text.Substring(10,4) + label5.Text.Substring(15,4);//獲取生成的注冊碼。
107                 if (strNameKey==strNumber)//判斷是否相等。
108                 {
109                     Microsoft.Win32.RegistryKey retkey1 =//打開對應的鍵值。
110                         Microsoft.Win32.Registry.CurrentUser.OpenSubKey("SOFTWARE").OpenSubKey("ZHD").OpenSubKey("ZHD.INI", true);
111                     //MessageBox.Show(retkey1.GetSubKeyNames().ToString());
112                     foreach (String strName in retkey1.GetSubKeyNames())//判斷注冊碼是否過期。
113                     {
114                         if (strName == strNameKey)//如果輸入的和原始值相等,則表示過期。
115                         {
116                             MessageBox.Show("你的注冊碼已經過期!", "提示");
117                             return;
118                         }
119                     }
120                     Microsoft.Win32.RegistryKey retkey =
121                         Microsoft.Win32.Registry.CurrentUser.OpenSubKey("SOFTWARE", true).CreateSubKey("ZHD").CreateSubKey("ZHD.INI").CreateSubKey(strNumber.TrimEnd());
122                     retkey.SetValue("UserName","天成科技有限責任公司");
123                     MessageBox.Show("注冊成功!","提示");
124                 }
125                 else
126                 {
127                     MessageBox.Show("注冊碼輸入錯誤!","提示");
128                 }
129             }
130         }
131 
132         private void button3_Click(object sender, EventArgs e)
133         {
134             Application.Exit();
135         }
136         
137 
138     }
139 }

效果如下:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM