Пример #1
0
        static void Main(string[] args)
        {
            try
            {
                Console.WriteLine(RegUtility.GetCpuNumber());

                RegLib.reginfo reg = new RegLib.reginfo();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }
Пример #2
0
        public static void ReadRegInfo()
        {
            //2011.4.26 修改为从注册表获取
            RegistryKey hkml     = Registry.LocalMachine;
            RegistryKey software = hkml.OpenSubKey("SOFTWARE", true);
            RegistryKey aimdir   = software.OpenSubKey("IPSI", true);

            string tmp;

            string[] arytmp;

            //如果已经有使用过软件,通过注册表读取第一次使用时间+硬盘序列号+序列号
            if (aimdir != null && aimdir.GetValue("PatSI") != null)
            {
                try
                {
                    tmp = aimdir.GetValue("PatSI").ToString();
                    tmp = encryptDecryptStr(tmp);


                    //如果仅用|分割,在本身就含有|字符的时候可能会出现问题
                    string[] sep = new string[] { "@|#" };
                    arytmp = tmp.Split(sep, StringSplitOptions.RemoveEmptyEntries);
                    //arytmp = tmp.Split('|');

                    if (arytmp.Length >= 3)
                    {
                        //第一次使用时间
                        _FirstUsedTime = Convert.ToDateTime(arytmp[0]);
                        //最后一次使用时间
                        _LastUsedTime = Convert.ToDateTime(arytmp[1]);
                        //序列号
                        _SerialNo = arytmp[2];

                        #region 取生成时间和机器码

                        string strCreatDate = String.Empty;

                        strCreatDate = _SerialNo.Substring(_SerialNo.Length - 20, 10);
                        StrSqEndDate = _SerialNo.Substring(_SerialNo.Length - 10);
                        StrPC_SQM    = _SerialNo.Substring(0, _SerialNo.Length - 20);

                        #endregion
                        dtCreatDate = DateTime.Parse(strCreatDate);
                        dtSqEndDate = DateTime.Parse(StrSqEndDate).AddDays(1);

                        //DateTime dtWebHost

                        ////防止调整客户端时间,造成一直不过期的现象,要求重新注册
                        //if (!(DateTime.Now > _LastUsedTime && _LastUsedTime > _FirstUsedTime))
                        //{
                        //    #region 采取策略是强制过期还是保留使用时间差?

                        //    //使用强制过期,不满年直接变为满年
                        //    TimeSpan ts = (_LastUsedTime - _FirstUsedTime).Duration();
                        //    _FirstUsedTime = DateTime.Now.AddDays(-(ts.Days / nRegDay + 1) * nRegDay);
                        //    _LastUsedTime = DateTime.Now;

                        //    #endregion
                        //}
                    }
                    else
                    {   //针对仅有第一次试用时间,无注册码的情况
                        //_FirstUsedTime = Convert.ToDateTime(tmp);

                        //第一次使用时间
                        _FirstUsedTime = Convert.ToDateTime(arytmp[0]);
                        //最后一次使用时间
                        _LastUsedTime = Convert.ToDateTime(arytmp[1]);
                    }
                }
                catch (Exception)
                {
                    //如果注册表有键无值或者无法被正常处理,说明注册信息被破坏,直接将_FirstUsedTime改为随机年,造成使用年份变化,要求重新注册
                    Random r = new Random();
                    int    i = r.Next(2, 9);
                    _FirstUsedTime = DateTime.Now.AddDays(-nRegDay * i);
                    _LastUsedTime  = DateTime.Now;
                    _SerialNo      = String.Empty;
                }
            }
            else
            {
                //如果没有键但存在检索历史记录文件,说明删除过注册表信息,需要重新注册
                string shFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "SearchHistory.txt");
                if (false && File.Exists(shFile))
                {
                    //将第一次使用时间置为检索记录文件创建时间,最后一次使用时间置为检索记录文件最后访问时间
                    FileInfo fi = new FileInfo(shFile);
                    _FirstUsedTime = fi.CreationTime;
                    _LastUsedTime  = fi.LastAccessTime;
                    _SerialNo      = String.Empty;
                }
                //否则就是第一次使用
                else
                {
                    _FirstUsedTime = DateTime.Now;
                    _LastUsedTime  = DateTime.Now;
                    _SerialNo      = String.Empty;
                }
            }

            //使用年份
            _UsedYear = ((int)(_LastUsedTime - _FirstUsedTime).TotalDays) / nRegDay + 1;
            //读取网卡Mac地址并加上使用年份
            _DiskNumber = _UsedYear + RegUtility.GetCpuNumber();


            //string strTmpYY = ((char)((Convert.ToInt32(_Cyear, 10) - 2001) + 'A')).ToString();
            _DiskNumber_2014 = _DiskNumber; // strCC + strTmpYY + _DiskNumber;
        }
Пример #3
0
 private void radCpu_CheckedChanged(object sender, EventArgs e)
 {
     txbJqh.Text = RegUtility.GetCpuNumber();
     txbYzm.Text = RegUtility.GetRegNumber(txbJqh.Text);
 }