208 lines
7.9 KiB
C#
208 lines
7.9 KiB
C#
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值
|
|
/// <summary>
|
|
/// 获取CPU
|
|
/// </summary>
|
|
/// <returns>CPU字符串</returns>
|
|
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;
|
|
}
|
|
/// <summary>
|
|
/// 获取卷轴字符串
|
|
/// </summary>
|
|
/// <returns>卷轴字符串</returns>
|
|
public string GetDiskVolumeSerialNumber()
|
|
{
|
|
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
|
|
ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"d:\"");
|
|
disk.Get();
|
|
return disk.GetPropertyValue("VolumeSerialNumber").ToString();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取时间字符串
|
|
/// </summary>
|
|
/// <returns>时间字符串</returns>
|
|
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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 得到机器码
|
|
/// </summary>
|
|
/// <returns>机器码</returns>
|
|
public string getMNum()
|
|
{
|
|
string strNum = getCPU() + GetDiskVolumeSerialNumber() + GetTimeStr(); //获得32位Cpu和硬盘序列号
|
|
string strMNum = strNum.Substring(0, 32); //从生成的字符串中取出前32个字符做为机器码
|
|
return strMNum;
|
|
}
|
|
/// <summary>
|
|
/// 获得注册码
|
|
/// </summary>
|
|
/// <returns>注册码字符串</returns>
|
|
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;
|
|
}
|
|
/// <summary>
|
|
/// 给数组赋值小于10的数
|
|
/// </summary>
|
|
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)
|
|
{
|
|
|
|
}
|
|
}
|
|
}
|