1、 string strCpu = null; ManagementClass myCpu = new ManagementClass(win32_Processor); ManagementObjectCollection myCpuConnection = myCpu.GetInstances(); foreach( ManagementObject myObject in myCpuConnection) strCpu = myObject.PropertiesProcessorid.Value.ToString(); break; return strCpu; /取得设备硬盘的卷标号 p
2、ublic string GetDiskVolumeSerialNumber() ManagementClass mc = new ManagementClass(Win32_NetworkAdapterConfiguration ManagementObject disk = new ManagementObject(win32_logicaldisk.deviceid=c: disk.Get(); return disk.GetPropertyValue(VolumeSerialNumber).ToString(); /步骤二: 收集硬件信息生成机器码, 代码如下: /生成机器码 publ
3、ic string CreateCode() string temp = getCpu() + GetDiskVolumeSerialNumber();/获得24位Cpu和硬盘序列号 string strid = new string24;/ for (int i = 0; i 24; i+)/把字符赋给数组 stridi = temp.Substring(i, 1); temp = ; /Random rdid = new Random(); i+)/从数组随机抽取24个字符组成新的字符生成机器三 /temp += stridrdid.Next(0, 24); temp += stridi+
4、3=24?0:i+3; return GetMd5(temp); /步骤三: 使用机器码生成软件注册码, 代码如下: /使用机器码生成注册码 public int intCode = new int127;/用于存密钥 public void setIntCode()/给数组赋值个小于10的随机数 /Random ra = new Random(); /for (int i = 1; i intCode.Length;i+ ) / / intCodei = ra.Next(0, 9); / for (int i = 1; i 9 ? 0 : i + 3; public int intNumbe
5、r = new int25;/用于存机器码的Ascii值 public char Charcode = new char25;/存储机器码字 /生成注册码 public string GetCode(string code) if (code != ) /把机器码存入数组中 setIntCode();/初始化127位数组 i /把机器码存入数组中 Charcodei = Convert.ToChar(code.Substring(i - 1, 1); / for (int j = 1; j /把字符的ASCII值存入一个整数组中。 intNumberj = intCodeConvert.ToI
6、nt32(Charcodej) + Convert.ToInt32(Charcodej); string strAsciiName = null;/用于存储机器码 j = 48 & intNumberj 57) strAsciiName += Convert.ToChar(intNumberj).ToString(); /判断字符ASCII值是否AZ之间 else if (intNumberj = 65 & intNumberj 90) /判断字符ASCII值是否az之间= 97 & intNumberj 122) else/判断字符ASCII值不在以上范围内 122)/判断字符ASCII值是
7、否大于z strAsciiName += Convert.ToChar(intNumberj - 10).ToString(); else strAsciiName += Convert.ToChar(intNumberj - 9).ToString(); /label3.Text = strAsciiName;/得到注册码 return strAsciiName; return /步骤四: 用户输入注册码注册软件, 演示代码如下: /注册 public bool RegistIt(string currentCode,string realCode) if (realCode ! if (c
8、urrentCode.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(, BBC6D58D0953F027760A046D58D52786 retkey = M
9、icrosoft.Win32.Registry.LocalMachine. return Stupids; 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.
10、CurrentUser; try keynames = localRegKey.OpenSubKey(softwareStupidsCatStupidsCat.ini + GetMd5(sn).GetValueNames(); foreach (string name in keynames) if (name = if (localRegKey.OpenSubKey( + GetMd5(sn).GetValue().ToString() = flag = true; keynames = userRegKey.OpenSubKey( if (flag & userRegKey.OpenSub
11、Key( return true; return false; catch 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;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1