using Microsoft.Win32; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.OleDb; using System.Drawing; using System.Linq; using System.Management; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace SetTools.Views { public partial class Register : Form { public String ConSql = @"Provider=Microsoft.Jet.OleDb.4.0; Data Source = " + System.IO.Directory.GetCurrentDirectory() + "\\rqdata.mdb"; public Register() { InitializeComponent(); MachineNum.Text = getMNum(); } private int[] intCode = new int[127]; // 存储密钥 private char[] charCode = new char[33]; // 存储机器码字 private int[] intNumber = new int[33]; // 存机器码的Ascii值 /// /// 获取CPU /// /// CPU字符串 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=\"d:\""); disk.Get(); return disk.GetPropertyValue("VolumeSerialNumber").ToString(); } /// /// 获取时间字符串 /// /// 时间字符串 public string GetTimeStr() { /* 获取当前时间字符串函数 */ string tempTimeStr = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString().PadLeft(2, '0') +DateTime.Now.Day.ToString().PadLeft(2, '0'); /* 以年-月-日的格式命名文件 */ return tempTimeStr; } /// /// 得到机器码 /// /// 机器码 public string getMNum() { string strNum = getCPU() + GetDiskVolumeSerialNumber() + GetTimeStr(); //获得32位Cpu和硬盘序列号 string strMNum = strNum.Substring(0, 32); //从生成的字符串中取出前32个字符做为机器码 return strMNum; } /// /// 获得注册码 /// /// 注册码字符串 public string getRNum() { SetIntCode(); string strMNum = getMNum(); for (int i = 1; i < charCode.Length; i++) //存储机器码 { charCode[i] = Convert.ToChar(strMNum.Substring(i - 1, 1)); } for (int j = 1; j < intNumber.Length; j++) //改变ASCII码值 { intNumber[j] = Convert.ToInt32(charCode[j]) + intCode[Convert.ToInt32(charCode[j])]; } string strAsciiName = ""; //注册码 for (int k = 1; k < intNumber.Length; k++) //生成注册码 { if ((intNumber[k] >= 48 && intNumber[k] <= 57) || (intNumber[k] >= 65 && intNumber[k] <= 90) || (intNumber[k] >= 97 && intNumber[k] <= 122)) //判断如果在0-9、A-Z、a-z之间 { strAsciiName += Convert.ToChar(intNumber[k]).ToString(); } else if (intNumber[k] > 122) //判断如果大于z { strAsciiName += Convert.ToChar(intNumber[k] - 10).ToString(); } else { strAsciiName += Convert.ToChar(intNumber[k] - 9).ToString(); } } return strAsciiName; } /// /// 给数组赋值小于10的数 /// public void SetIntCode() { for (int i = 1; i < intCode.Length; i++) { intCode[i] = i % 9; } } private void sign_Click(object sender, EventArgs e) { try { OleDbConnection conn; conn = new OleDbConnection(ConSql); if (RegNum.Text == getRNum()) { DateTime result = DateTime.Now.AddMonths(3);//获取当前时间往后3个月的时间点 string Username = namebox.Text; string Password = passwordbox.Text; bool read_flag = true; conn.Open(); OleDbCommand cnd = conn.CreateCommand(); cnd = conn.CreateCommand(); cnd.CommandText = @"select * from [YunXin_Admin] where AdminName = '" + Username + "' and Password = '" + Password + "'"; cnd.ExecuteNonQuery(); OleDbDataReader odr; odr = cnd.ExecuteReader(); if (odr.Read()) read_flag = true; else read_flag = false; conn.Close(); if(read_flag == false) { MessageBox.Show("注册成功!", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information); conn.Open(); OleDbCommand cmd = conn.CreateCommand(); cmd = conn.CreateCommand(); cmd.CommandText = @"INSERT INTO YunXin_Admin([AdminName], [Password], [UserName], [expirydayte], [AdminPurview], [Working], [LastLoginTime], [LastLoginIP], [Explain], [AddTime])VALUES('" + Username + "', '"; cmd.CommandText += Password + "', '" + Username + "', '" + result + "', '" + "11,| 12,|" + "', '" + 1 + "', '" + result + "', '" + 15 + "', '" + "普通用户" + "', '" + result + "')"; cmd.ExecuteNonQuery(); conn.Close(); this.Close(); } else { MessageBox.Show("更新成功!", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information); conn.Open(); OleDbCommand cmd = conn.CreateCommand(); cmd = conn.CreateCommand(); cmd.CommandText = @"UPDATE YunXin_Admin set [expirydayte] = '" + result + "'"; cmd.CommandText += " where AdminName = '" + Username + "' and Password = '" + Password + "'"; cmd.ExecuteNonQuery(); conn.Close(); this.Close(); } } else { MessageBox.Show("注册码错误!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } catch (Exception ex) { throw new Exception(ex.Message); } } private void ignore_Click(object sender, EventArgs e) { this.Close(); FormDevice fd = new FormDevice(); fd.Show(); } private void exit_Click(object sender, EventArgs e) { this.Close(); } private void Register_Load(object sender, EventArgs e) { } } }