using formula_manage.UserClass; using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Globalization; using System.Linq; using System.Management; using System.Runtime.InteropServices; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Forms; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; namespace formula_manage.Windows { /// /// CDKEY.xaml 的交互逻辑 /// public partial class CDKEY : Window { public CDKEY() { WindowStartupLocation = WindowStartupLocation.CenterScreen; InitializeComponent(); } string cpuSerialNumber; string biosSerialNumber; public string INIPath = Convert.ToString(System.AppDomain.CurrentDomain.BaseDirectory) + "formula.ini"; private void Window_CDKEY(object sender, RoutedEventArgs e) //打开页面 { // 获取CPU序列号 cpuSerialNumber = HardwareSN.GetCPUSerialNumber(); // 获取主板序列号 biosSerialNumber = HardwareSN.GetBIOSSerialNumber(); // 获取硬盘序列号 //string hardDiskSerialNumber = HardwareSN.GetHardDiskSerialNumber(); // 获取网卡地址 //string netCardMACAddress = HardwareSN.GetNetCardMACAddress(); sn_id.Text = MD5check.MD5Encrypt16(cpuSerialNumber+ biosSerialNumber);//生成id基于硬件值的md5校验 } private void Button_Click_2(object sender, RoutedEventArgs e) //cdk确认按钮 { string id_1; id_1 = sn_id.Text.Substring(5, 1) + sn_id.Text.Substring(0, 1) + sn_id.Text.Substring(4, 1) + sn_id.Text.Substring(1, 1) + sn_id.Text.Substring(3, 1) + sn_id.Text.Substring(2, 1); if (id_1 == cdk.Text.Substring(0, 6)) { if (CRCcheck16.ToCRC16(CRCcheck16.StringToHexByte(cdk.Text.Substring(0, 12)), true) == cdk.Text.Substring(12, 4)) //校验key的crc校验值 { string Y = (2255 - StrToInt.To16Convert10(cdk.Text.Substring(6, 2))).ToString(); string M = (255 - StrToInt.To16Convert10(cdk.Text.Substring(8, 2))).ToString(); string D = (255 - StrToInt.To16Convert10(cdk.Text.Substring(10, 2))).ToString(); string YY = DateTime.Now.ToString("yyyy"); string MM = DateTime.Now.ToString("MM"); string DD = DateTime.Now.ToString("dd"); if (string.Compare(Y, YY) == 0) { if (string.Compare(M, MM) == 0) { if (string.Compare(D, DD) >= 0) { System.Windows.MessageBox.Show("CDKEY:OK"); sn_time.Text = "CDkeyDueTime: " + Y + "-" + M + "-" + D; UserClass.IniFile.IniFiles Configini = new UserClass.IniFile.IniFiles(INIPath); Configini.IniWritevalue("SN", " SN1", cdk.Text); Configini.IniWritevalue("SN", " SN2", MD5check.MD5Encrypt16(cpuSerialNumber + biosSerialNumber)); } else if(string.Compare(M, MM) > 0) { System.Windows.MessageBox.Show("CDKEY:OK"); sn_time.Text = "CDkeyDueTime: " + Y + "-" + M + "-" + D; UserClass.IniFile.IniFiles Configini = new UserClass.IniFile.IniFiles(INIPath); Configini.IniWritevalue("SN", " SN1", cdk.Text); Configini.IniWritevalue("SN", " SN2", MD5check.MD5Encrypt16(cpuSerialNumber + biosSerialNumber)); } else { System.Windows.MessageBox.Show("CDKEY:overdue"); } } else { System.Windows.MessageBox.Show("CDKEY:overdue"); } } else if (string.Compare(Y, YY) > 0) { System.Windows.MessageBox.Show("CDKEY:OK"); sn_time.Text = "CDkeyDueTime: " + Y + "-" + M + "-" + D; UserClass.IniFile.IniFiles Configini = new UserClass.IniFile.IniFiles(INIPath); Configini.IniWritevalue("SN", " SN1", cdk.Text); Configini.IniWritevalue("SN", " SN2", MD5check.MD5Encrypt16(cpuSerialNumber + biosSerialNumber)); } else { System.Windows.MessageBox.Show("CDKEY:overdue"); } } } } } }