Exemple #1
0
        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);
        }
Exemple #2
0
        public CommonSoftware()
        {
#if REG
            //TimeTicksUsed=
            TimeStart = DateTime.Now.Ticks;
            if (RegEditor.IsRegistryKeyExist(TUName))
            {
                var strTimeUsed = RegEditor.ReadUsedTime();
                if (long.TryParse(strTimeUsed, out long result))
                {
                    TimeTicksUsed = result;
#if TEST
                    MessageBox.Show(TimeTicksUsed.ToString());
#endif
                }
            }
            else
            {
                RegEditor.WriteRemainTime("0");
            }
#endif
        }