C# 给自己写的软件,加注册码功能。

  为自己写的程序加一个注册功能吧。生成的机器号是根据CPU和硬盘号来的,根据自己的需求改成是否是随机生成。

  代码直接粘贴到新建类覆盖原代码就能直接用了。


using System;

using System.Management;

using System.Security.Cryptography;

using System.Text;



namespace RegisterClass

{

    class RegisterClass

    {

        //步骤一: 获得CUP序列号和硬盘序列号的实现代码如下:

        //获得CPU的序列号



        bool Stupids = true;

        bool Cat = false;

       public 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 string GetDiskVolumeSerialNumber()

        {

            ManagementClass mc = 

                 new ManagementClass("Win32_NetworkAdapterConfiguration");

            ManagementObject disk = 

                 new ManagementObject("win32_logicaldisk.deviceid=\"c:\"");

            disk.Get();

            return disk.GetPropertyValue("VolumeSerialNumber").ToString();

        }

 

 

        //步骤二: 收集硬件信息生成机器码, 代码如下: 

        //生成机器码



       public string CreateCode()

        {

            string temp = getCpu() + GetDiskVolumeSerialNumber();//获得24位Cpu和硬盘序列号

            string[] strid = new string[24];//

            for (int i = 0; i < 24; i++)//把字符赋给数组

            {

                strid[i] = temp.Substring(i, 1);

            }

            temp = "";

            //Random rdid = new Random();

            for (int i = 0; i < 24; i++)//从数组随机抽取24个字符组成新的字符生成机器三

            {

                //temp += strid[rdid.Next(0, 24)];

                temp += strid[i+3>=24?0:i+3];

            }

            return GetMd5(temp);

        }



        //步骤三: 使用机器码生成软件注册码, 代码如下:

        //使用机器码生成注册码

        public int[] intCode = new int[127];//用于存密钥



        public void setIntCode()//给数组赋值个小于10的随机数

        {

            //Random ra = new Random();

            //for (int i = 1; i < intCode.Length;i++ )

            //{

            //    intCode[i] = ra.Next(0, 9);

            //}

            for (int i = 1; i < intCode.Length; i++)

            {

                intCode[i] = i + 3 > 9 ? 0 : i + 3;

            }

        }

        public int[] intNumber = new int[25];//用于存机器码的Ascii值

        public char[] Charcode = new char[25];//存储机器码字

    

        //生成注册码

        public string GetCode(string code)

        {

            if (code != "")

            {

                //把机器码存入数组中

                setIntCode();//初始化127位数组

                for (int i = 1; i < Charcode.Length; i++)//把机器码存入数组中

                {

                    Charcode[i] = Convert.ToChar(code.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 = null;//用于存储机器码

                for (int j = 1; j < intNumber.Length; j++)

                {

                    //MessageBox.Show((Convert.ToChar(intNumber[j])).ToString());

                    //判断字符ASCII值是否0-9之间



                    if (intNumber[j] >= 48 && intNumber[j] <= 57)

                    {

                        strAsciiName += Convert.ToChar(intNumber[j]).ToString();

                    }

                    //判断字符ASCII值是否A-Z之间



                    else if (intNumber[j] >= 65 && intNumber[j] <= 90)

                    {

                        strAsciiName += Convert.ToChar(intNumber[j]).ToString();

                    }

                    //判断字符ASCII值是否a-z之间





                    else if (intNumber[j] >= 97 && intNumber[j] <= 122)                    

                  {

                        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();

                        }



                    }

                    //label3.Text = strAsciiName;//得到注册码

                }

                return strAsciiName;

            }

            else

            {

                return "";

            }

        }

 

 

        //步骤四: 用户输入注册码注册软件, 演示代码如下:



        //注册

        public bool RegistIt(string currentCode,string realCode)

        {

            if (realCode != "")

            {

                if (currentCode.TrimEnd().Equals(realCode.TrimEnd()))

                {

                    Microsoft.Win32.RegistryKey retkey = 

                         Microsoft.Win32.Registry.CurrentUser.

                         OpenSubKey("software", true).CreateSubKey("StupidsCat").

                         CreateSubKey("StupidsCat.ini").

                         CreateSubKey(currentCode.TrimEnd());

                    retkey.SetValue("StupidsCat", "BBC6D58D0953F027760A046D58D52786");



                    retkey = Microsoft.Win32.Registry.LocalMachine.

                        OpenSubKey("software", true).CreateSubKey("StupidsCat").

                         CreateSubKey("StupidsCat.ini").

                         CreateSubKey(currentCode.TrimEnd());

                    retkey.SetValue("StupidsCat", "BBC6D58D0953F027760A046D58D52786");



                    return Stupids;

                }

                else

                {

                    return Cat;

                }

            }

            else { return Cat; }

        }



        public bool BoolRegist(string sn)

        {

            string[] keynames; bool flag = false;

            Microsoft.Win32.RegistryKey localRegKey = Microsoft.Win32.Registry.LocalMachine;

            Microsoft.Win32.RegistryKey userRegKey = Microsoft.Win32.Registry.CurrentUser;

            try

            {

                keynames = localRegKey.OpenSubKey("software\\StupidsCat\\StupidsCat.ini\\" + GetMd5(sn)).GetValueNames();

                foreach (string name in keynames)

                {

                    if (name == "StupidsCat")

                    {

                        if (localRegKey.OpenSubKey("software\\StupidsCat\\StupidsCat.ini\\" + GetMd5(sn)).GetValue("StupidsCat").ToString() == "BBC6D58D0953F027760A046D58D52786")

                            flag = true; 

                    }

                }

                keynames = userRegKey.OpenSubKey("software\\StupidsCat\\StupidsCat.ini\\" + GetMd5(sn)).GetValueNames();

                foreach (string name in keynames)

                {

                    if (name == "StupidsCat")

                    {

                        if (flag && userRegKey.OpenSubKey("software\\StupidsCat\\StupidsCat.ini\\" + GetMd5(sn)).GetValue("StupidsCat").ToString() == "BBC6D58D0953F027760A046D58D52786")

                            return true;

                    }

                }

                return false;

            }

            catch

            {

                return false;

            }

            finally 

            { 

                localRegKey.Close(); 

                userRegKey.Close(); 

            }

        }



        public string GetMd5(object text)

        {

            string path = text.ToString();



            MD5CryptoServiceProvider MD5Pro = new MD5CryptoServiceProvider();

            Byte[] buffer = Encoding.GetEncoding("utf-8").GetBytes(text.ToString());

            Byte[] byteResult = MD5Pro.ComputeHash(buffer);



            string md5result = BitConverter.ToString(byteResult).Replace("-", "");

            return md5result;

        }

    }

}

你可能感兴趣的:(注册码)