/// <summary> /// 生成注册码 /// </summary> /// <param name="MachineKey"></param> /// <param name="Timeout"></param> /// <returns></returns> public string GenRegisterKey(string MachineKey, EnumTimeOut Timeout) { var ClientMachineKey = MachineNumberModel.FromString(MachineKey); var registerKeyModel = new RegisterKeyModel() { RegisterKey = info.GetRNum(ClientMachineKey.HardwareID, false), TimeLimit = Timeout, //1 Timestamp5 = ClientMachineKey.Timestamp5, //5 RegistTimeTicks = ClientMachineKey.Timestamp20, //20 //BFEBFBFF000906EA52176B8A006368747630831805632834385645 }; //MessageBox.Show($"生成的注册码:{ClientMachineKey.HardwareID}\n{registerKeyModel.RegisterKey}"); return(registerKeyModel.ToString()); }
public bool CheckFile(out double DaysLeft) { DaysLeft = 0; if (File.Exists(FilePath) && RegEditor.IsRegistryKeyExist(RGName)) { //MessageBox.Show("10"); using (var s = new FileStream(FilePath, FileMode.Open)) { var bf = new BinaryFormatter(); RegisterKeyModel ModelInFile = bf.Deserialize(s) as RegisterKeyModel; var ModelInReg = RegisterKeyModel.FromString(RegEditor.ReadRegisterValue()); //MessageBox.Show($"10\n{ModelInFile.ToString()}\n{ModelInReg.ToString()}"); if (ModelInFile == ModelInReg) { //MessageBox.Show("11"); //总时间-(读取Now-注册时间) if (!ModelInFile.IsTimeoutFromNow(out double DaysLeft1)) { //MessageBox.Show("12"); long ticks = long.Parse(RegEditor.ReadUsedTime()); //以下是防止客户篡改系统时间 if (TimeSpan.FromTicks(ticks).TotalDays <= TimeArr[(int)ModelInFile.TimeLimit]) { //MessageBox.Show("13"); //这个时间是剩余的使用时间 var DaysLeft2 = TimeArr[(int)ModelInFile.TimeLimit] - TimeSpan.FromTicks(ticks).TotalDays; DaysLeft = Math.Min(DaysLeft1, DaysLeft2); //按照最大的使用时间计算已经使用的Ticks TimeTicksUsed = TimeSpan.FromDays(TimeArr[(int)ModelInFile.TimeLimit] - DaysLeft).Ticks; RegEditor.WriteRemainTime(TimeTicksUsed.ToString()); return(true); } } } } } return(false); }
/// <summary> /// 点击注册的时候操作 /// </summary> /// <param name="RegisterKey"></param> /// <returns></returns> public bool CheckRegisterKey(string MachineKey, string RegisterKey) { var MachineModelIn = MachineNumberModel.FromString(MachineKey); var ModelIn = RegisterKeyModel.FromString(RegisterKey); //MessageBox.Show($"{ModelIn.Timestamp5}\n{MachineModelIn.Timestamp5}\n"); if (ModelIn.Timestamp5 != MachineModelIn.Timestamp5) { throw new Exception("已经过时的注册码"); } string ClacRegisterKey = info.GetRNum(MachineModelIn.HardwareID, true); //MessageBox.Show($"获取的注册码:{MachineModelIn.HardwareID}\n{ClacRegisterKey}"); //说明从注册信息里读的是正确的,但是再次获取机器码就不对了 //MessageBox.Show($"4\n{ModelIn.RegisterKey}\n{ClacRegisterKey}\n{ModelIn.RegisterKey.Length}\n{ClacRegisterKey.Length}"); if (ModelIn.RegisterKey.Trim() == ClacRegisterKey.Trim()) { //注册成功的时候写入文件 using (var s = new FileStream(FilePath, FileMode.Create, FileAccess.Write)) { var bf = new BinaryFormatter(); bf.Serialize(s, ModelIn); RegEditor.WriteRegisterValue(RegisterKey); RegEditor.WriteRemainTime("0"); DaysLeft = TimeArr[(int)ModelIn.TimeLimit]; return(true); } } return(false); }