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)
{
}
}
}