.Net用户使用期限的设置、限制通用小组件_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > .Net用户使用期限的设置、限制通用小组件

.Net用户使用期限的设置、限制通用小组件

 2013/7/24 9:43:25  遗忘le孤单  博客园  我要评论(0)
  • 摘要:最近比较项目组的同事都比较烦,不断的穿梭在不同的项目之间,一个人同时要兼顾多个项目的维护修改。甚至刚放下这个客户的电话,另一个客户的电话就进来了。究其原因,相比很多人都深受其苦,“收尾款”```````看着商务部,不断发过来的项目维护文档,同时伴随着客户不断的承诺,这批维护好就结尾款。。。。我们为之奋斗了一天又一天````终于,商务部的老大火了,为了每个客户剩余的那些尾款,投入的精力,都足赶上承接一个新的客户的项目开发精力啦。商务老大丢出很霸气的一句话
  • 标签:.net 使用 net 用户 限制

    最近比较项目组的同事都比较烦,不断的穿梭在不同的项目之间,一个人同时要兼顾多个项目的维护修改。甚至刚放下这个客户的电话,另一个客户的电话就进来了。究其原因,相比很多人都深受其苦,“收尾款”```````

   看着商务部,不断发过来的项目维护文档,同时伴随着客户不断的承诺,这批维护好就结尾款。。。。我们为之奋斗了一天又一天````

   终于,商务部的老大火了,为了每个客户剩余的那些尾款,投入的精力,都足赶上承接一个新的客户的项目开发精力啦。商务老大丢出很霸气的一句话,给所有在收尾款以及以后开发的新项目都加一个使用期限限制,到时不给钱就给他停了~~~

   于是乎,我就负责了这个小功能的开发~~~~

   思路如下:在第一次运行项目的时候,记录相应的时间戳,之后每次运行之前对比相应的时间戳,在快要到期时,每次运行都给予提醒。

     在记录时间戳方面,考虑到写入系统文件和注册表,最终处于安全性选择写入注册表,在命名方面都想系统挂边,希望最大起到最大限度的迷惑性,^_^。

代码如下:

class="code_img_closed" src="/Upload/Images/2013072409/0015B68B3C38AA5B.gif" alt="" />logs_code_hide('0404ec72-fc53-4af9-a928-235b2104a377',event)" src="/Upload/Images/2013072409/2B1B950FA3DF188F.gif" alt="" />
       #region 写入注册表做法
        //写入注册表
        private static void CreateReg(bool outTime)
        {
            RegistryKey FaxSoftWareKey = Registry.CurrentUser.OpenSubKey("SOFTWARE", true);
            RegistryKey FAXKey = FaxSoftWareKey.OpenSubKey("System_Confine_XP", true);
            if (FAXKey == null)
            {
                FAXKey = FaxSoftWareKey.CreateSubKey("System_Confine_XP");
                FAXKey.SetValue("InstallDate", DateTime.Now.ToString());
                FAXKey.SetValue("Intime", "30");
            }
            else
            {
                if (outTime)
                {
                    FAXKey.SetValue("InstallDate", "0");
                }
            }
            FAXKey.Close();
            FaxSoftWareKey.Close();
        }
        //从注册表中读取数据
        private string ReadReg(string regName)
        {
            RegistryKey FaxSoftWareKey = Registry.CurrentUser.OpenSubKey("SOFTWARE", false);
            RegistryKey FAXKey = FaxSoftWareKey.OpenSubKey("System_Confine_XP");
            string s_value = FAXKey.GetValue(regName).ToString();
            FAXKey.Close();
            FaxSoftWareKey.Close();
            return s_value;
        }
        #endregion
注册表读写

同时提供下写入系统文件部分的代码,可以在winForm时用,主要起到迷惑作用,Tencent\QQPinyin\Face\ImageCache\52.gif" alt="" />^_^.......

代码如下:

        #region 写入系统文件的做法
        /// <summary>
        /// 获取安装标志,如果找不到安装标识,则创建
        /// </summary>
        /// <param name="filePath"></param>
        /// <returns></returns>
        protected string GetTheCreateMark(string filePath)
        {

            if (!File.Exists(filePath))
            {
                StreamWriter Fwriter = new StreamWriter(filePath);
                Fwriter.WriteLine(DateTime.Now.ToString());
                Fwriter.Flush();
                Fwriter.Close();
                File.SetAttributes(filePath, FileAttributes.Hidden);
                return DateTime.Now.ToString();
            }
            StreamReader Freader = new StreamReader(filePath);
            string txtValue = Freader.ReadLine();
            Freader.Close();
            return txtValue;
        }
        /// <summary>
        /// 更改安装标识
        /// </summary>
        /// <param name="filePath"></param>
        protected void ChangeTheCreatMark(string filePath)
        {
            File.SetAttributes(filePath, FileAttributes.Normal);
            StreamWriter Twriter = new StreamWriter(filePath);
            Twriter.WriteLine("0");
            Twriter.Flush();
            Twriter.Close();
            File.SetAttributes(filePath, FileAttributes.Hidden);
        }
        #endregion
系统文件读写

   考虑到可能会运用到webform和winform中,所以把两个都做了处理。

   1.webForm,利用了Golbal中Application_BeginRequest方法,在请求之前验证是否过期,同时利用Session_Start方法,在回话开启时倒计时提醒即将过期。

 Webpermission类相关操作:

public class Webpermission : ValidatePermission<HttpContext>, IValidatePermission<HttpContext>
    {
        public new void ClosedClient()
        {
            HttpContext.Current.Response.Write("<script language=javascript>alert('您的试用期已过,请联系本公司,获取正式版本!!');window.opener=null;window.open('','_self');window.close();</script>");
        }
        public new void WaringWord(string url)
        {
                if (Date > 0 && Date <= 10)
                {
                    string str = "<script language=javascript>alert('您的系统使用时间剩余{0}天即将过期!!');window.location.href='{1}'</script>";
                    HttpContext.Current.Response.Write(string.Format(str, Date,url));
                }
        }
    }
WebForm验证操作类

Golbal部分代码:

  IValidatePermission<HttpContext> iv = new Webpermission();
        void Session_Start(object sender, EventArgs e)
        {
            // 在新会话启动时运行的代码
            string url = HttpContext.Current.Request.Url.ToString();
            iv.WaringWord(url);
        }
        protected void Application_BeginRequest(Object sender, EventArgs e)
        {
            if (!iv.Use_Time())
            {
                iv.ClosedClient();
            }
        }
Golbal部分代码

   2.winForm,利用应用程序主入口Main方法中验证是否过期。

 WinFPermission操作类:

  public class WinFPermission : ValidatePermission<Application>, IValidatePermission<Application>
    {
        public new void ClosedClient()
        {
            MessageBox.Show("您的试用期已过,请联系本公司,获取正式版本!!");
            Application.Exit();
        }
        public new void WaringWord(string url)
        {
            if (Date > 0 && Date <= 10)
            {
                MessageBox.Show(string.Format("您的系统使用时间剩余{0}天即将过期!!,请联系本公司,获取正式版本!!", Date));
            }
        }
    }
WinForm操作类

Program部分代码:

  static void Main()
        {
            IValidatePermission<Application> iv = new WinFPermission();
            if (!iv.Use_Time())
            {
                iv.ClosedClient();
                return;
            }
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MainForm());

        }
Program代码

   基本工作做完了,一个简单的小组件ok了,只要在后续项目中引用下,之后在相关的Golbal和program中简单的配置下就可以用起来~~~~走起~~~

上一篇: 浅谈Excel开发:一 Excel 开发概述 下一篇: 没有下一篇了!
发表评论
用户名: 匿名