c#如何实现软件授权后才能使用?

做了一款软件,客户要求,软件授权才能使用,别人才能使用软件。请问这个怎么做的?

设计一文件或者表用于存放注册信息可以是最后到期的日期(自己设计加密算法加密)
在输入用户名和密码登入时,检查在使用期限内直接进入,过期就提示输入注册码

public Boolean CheckRegister()
        {
            string sLogonLastDate = getValue("s_event_log", "zzdate", "1=1 order by zzdate desc", "T");
            string ps = MainClass.Mymethod.ReadINI("Setting", "PassWord1", null);
            DSTp = MyClass.getDataSet("select top 1 *,getdate() as ServerDate from s_check order by zzid desc", "tp", "log3", "DATA");
            if (DSTp.Tables[0].Rows.Count < 1)
            {
                MessageBox.Show("注册信息错误,请输入注册码重新注册!TB", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                frmRegister rg = new frmRegister();
                rg.LTitle.Text = "注册信息错误,请输入注册码重新注册!";
                rg.ShowDialog();
                return false;
            }
            if (Convert.ToDateTime(System.DateTime.Now.ToString("yyyy-MM-dd")) !=
                Convert.ToDateTime(Convert.ToDateTime(DSTp.Tables[0].Rows[0]["ServerDate"].ToString()).ToString("yyyy-MM-dd")) ||
                Convert.ToDateTime(Convert.ToDateTime(DSTp.Tables[0].Rows[0]["ServerDate"].ToString()).ToString("yyyy-MM-dd")) !=
                Convert.ToDateTime(Convert.ToDateTime(sLogonLastDate).ToString("yyyy-MM-dd")))
            {
                MessageBox.Show("当前电脑日期可能存在问题,请修改日期后继续!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                return false;
            }
            if (ps.Trim() != DSTp.Tables[0].Rows[0]["zzdes"].ToString().Trim())
            {
                MessageBox.Show("注册信息错误,请输入注册码重新注册!S", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                frmRegister rg = new frmRegister();
                rg.LTitle.Text = "注册信息错误,请输入注册码重新注册!";
                rg.ShowDialog();
                return false;
            }
            string sLastDate = crypto.Decrypt(DSTp.Tables[0].Rows[0]["zzcheck"].ToString().Trim(), ps);
            if (IsDateFormat(sLastDate) != true)
            {
                MessageBox.Show("注册信息错误,请输入注册码重新注册!LD", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                frmRegister rg = new frmRegister();
                rg.LTitle.Text = "注册信息错误,请输入注册码重新注册!";
                rg.ShowDialog();
                return false;
            }

            if (System.DateTime.Now > Convert.ToDateTime(sLastDate))// || Convert.ToDateTime(sLogonLastDate)> Convert.ToDateTime(sLastDate)
            {
                if (System.DateTime.Now > Convert.ToDateTime(sLastDate).AddDays(7))
                {
                    frmRegister rg = new frmRegister();
                    //rg.LTitle.Text = "软件已过服务期限,如果需要继续使用请续费!";
                    rg.ShowDialog();
                    return false;
                }
                else
                {
                    TimeSpan ds = Convert.ToDateTime(sLastDate).AddDays(7) - System.DateTime.Now;
                    MessageBox.Show("系统服务已到期,请续费!否则将 于" + Convert.ToInt32(ds.Days).ToString() + "天后将会被停止使用", "系统提 示", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                    return true;
                }
            }
            return true;
        }

第一先确定是离线授权还是在线授权。
第二保障软件的代码的唯一性防止别人逆向工程破解。

如果是在线授权,先做一个授权服务来通过私钥和公钥进行交换解密是否有权限
如果是离线授权,需要做好
小蜜蜂论坛发帖机对机器码的计算和时间的管理。
如果有闪存,可以通过USB读取闪存。
也可以通过生产授权文件。

你可能感兴趣的:(c#如何实现软件授权后才能使用?)