.Net用户使用期限的设置、限制通用小组件
2013-07-23 20:06
232 查看
最近比较项目组的同事都比较烦,不断的穿梭在不同的项目之间,一个人同时要兼顾多个项目的维护修改。甚至刚放下这个客户的电话,另一个客户的电话就进来了。究其原因,相比很多人都深受其苦,“收尾款”```````
看着商务部,不断发过来的项目维护文档,同时伴随着客户不断的承诺,这批维护好就结尾款。。。。我们为之奋斗了一天又一天````
终于,商务部的老大火了,为了每个客户剩余的那些尾款,投入的精力,都足赶上承接一个新的客户的项目开发精力啦。商务老大丢出很霸气的一句话,给所有在收尾款以及以后开发的新项目都加一个使用期限限制,到时不给钱就给他停了~~~
于是乎,我就负责了这个小功能的开发~~~~
思路如下:在第一次运行项目的时候,记录相应的时间戳,之后每次运行之前对比相应的时间戳,在快要到期时,每次运行都给予提醒。
在记录时间戳方面,考虑到写入系统文件和注册表,最终处于安全性选择写入注册表,在命名方面都想系统挂边,希望最大起到最大限度的迷惑性,^_^。
代码如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030192/cdec0645add3fc3c328197dda5c76203.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030189/81178cc93a2a3bb5048d90d76e7ec935.gif)
![](http://blog.csdn.net/dyllove98/article/details/file:/C:\Users\Administrator\AppData\Roaming\Tencent\QQPinyin\Face\ImageCache\52.gif)
![](http://blog.csdn.net/dyllove98/article/details/file:/C:\Users\Administrator\AppData\Roaming\Tencent\QQPinyin\Face\ImageCache\52.gif)
![](http://blog.csdn.net/dyllove98/article/details/file:/C:\Users\Administrator\AppData\Roaming\Tencent\QQPinyin\Face\ImageCache\52.gif)
![](http://blog.csdn.net/dyllove98/article/details/file:/C:\Users\Administrator\AppData\Roaming\Tencent\QQPinyin\Face\ImageCache\52.gif)
![](http://blog.csdn.net/dyllove98/article/details/file:/C:\Users\Administrator\AppData\Roaming\Tencent\QQPinyin\Face\ImageCache\52.gif)
![](http://blog.csdn.net/dyllove98/article/details/file:/C:\Users\Administrator\AppData\Roaming\Tencent\QQPinyin\Face\ImageCache\52.gif)
![](http://blog.csdn.net/dyllove98/article/details/file:/C:\Users\Administrator\AppData\Roaming\Tencent\QQPinyin\Face\ImageCache\52.gif)
![](http://blog.csdn.net/dyllove98/article/details/file:/C:\Users\Administrator\AppData\Roaming\Tencent\QQPinyin\Face\ImageCache\02.gif)
![](http://blog.csdn.net/dyllove98/article/details/file:/C:\Users\Administrator\AppData\Roaming\Tencent\QQPinyin\Face\ImageCache\02.gif)
^_^.......
代码如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030192/cdec0645add3fc3c328197dda5c76203.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030189/81178cc93a2a3bb5048d90d76e7ec935.gif)
1.webForm,利用了Golbal中Application_BeginRequest方法,在请求之前验证是否过期,同时利用Session_Start方法,在回话开启时倒计时提醒即将过期。
Webpermission类相关操作:
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030192/cdec0645add3fc3c328197dda5c76203.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030189/81178cc93a2a3bb5048d90d76e7ec935.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030192/cdec0645add3fc3c328197dda5c76203.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030189/81178cc93a2a3bb5048d90d76e7ec935.gif)
WinFPermission操作类:
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030192/cdec0645add3fc3c328197dda5c76203.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030189/81178cc93a2a3bb5048d90d76e7ec935.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030192/cdec0645add3fc3c328197dda5c76203.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030189/81178cc93a2a3bb5048d90d76e7ec935.gif)
看着商务部,不断发过来的项目维护文档,同时伴随着客户不断的承诺,这批维护好就结尾款。。。。我们为之奋斗了一天又一天````
终于,商务部的老大火了,为了每个客户剩余的那些尾款,投入的精力,都足赶上承接一个新的客户的项目开发精力啦。商务老大丢出很霸气的一句话,给所有在收尾款以及以后开发的新项目都加一个使用期限限制,到时不给钱就给他停了~~~
于是乎,我就负责了这个小功能的开发~~~~
思路如下:在第一次运行项目的时候,记录相应的时间戳,之后每次运行之前对比相应的时间戳,在快要到期时,每次运行都给予提醒。
在记录时间戳方面,考虑到写入系统文件和注册表,最终处于安全性选择写入注册表,在命名方面都想系统挂边,希望最大起到最大限度的迷惑性,^_^。
代码如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030192/cdec0645add3fc3c328197dda5c76203.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030189/81178cc93a2a3bb5048d90d76e7ec935.gif)
#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时用,主要起到迷惑作用,
![](http://blog.csdn.net/dyllove98/article/details/file:/C:\Users\Administrator\AppData\Roaming\Tencent\QQPinyin\Face\ImageCache\52.gif)
![](http://blog.csdn.net/dyllove98/article/details/file:/C:\Users\Administrator\AppData\Roaming\Tencent\QQPinyin\Face\ImageCache\52.gif)
![](http://blog.csdn.net/dyllove98/article/details/file:/C:\Users\Administrator\AppData\Roaming\Tencent\QQPinyin\Face\ImageCache\52.gif)
![](http://blog.csdn.net/dyllove98/article/details/file:/C:\Users\Administrator\AppData\Roaming\Tencent\QQPinyin\Face\ImageCache\52.gif)
![](http://blog.csdn.net/dyllove98/article/details/file:/C:\Users\Administrator\AppData\Roaming\Tencent\QQPinyin\Face\ImageCache\52.gif)
![](http://blog.csdn.net/dyllove98/article/details/file:/C:\Users\Administrator\AppData\Roaming\Tencent\QQPinyin\Face\ImageCache\52.gif)
![](http://blog.csdn.net/dyllove98/article/details/file:/C:\Users\Administrator\AppData\Roaming\Tencent\QQPinyin\Face\ImageCache\52.gif)
![](http://blog.csdn.net/dyllove98/article/details/file:/C:\Users\Administrator\AppData\Roaming\Tencent\QQPinyin\Face\ImageCache\02.gif)
![](http://blog.csdn.net/dyllove98/article/details/file:/C:\Users\Administrator\AppData\Roaming\Tencent\QQPinyin\Face\ImageCache\02.gif)
^_^.......
代码如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030192/cdec0645add3fc3c328197dda5c76203.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030189/81178cc93a2a3bb5048d90d76e7ec935.gif)
#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类相关操作:
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030192/cdec0645add3fc3c328197dda5c76203.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030189/81178cc93a2a3bb5048d90d76e7ec935.gif)
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部分代码:
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030192/cdec0645add3fc3c328197dda5c76203.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030189/81178cc93a2a3bb5048d90d76e7ec935.gif)
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操作类:
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030192/cdec0645add3fc3c328197dda5c76203.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030189/81178cc93a2a3bb5048d90d76e7ec935.gif)
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部分代码:
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030192/cdec0645add3fc3c328197dda5c76203.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030189/81178cc93a2a3bb5048d90d76e7ec935.gif)
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中简单的配置下就可以用起来~~~~走起~~~
相关文章推荐
- .Net用户使用期限的设置、限制通用小组件
- Linux用户管理:设置用户口令的使用期限
- .NET-使用NPOI组件将数据导出Excel-通用方法
- (升级修改版1.1)集群配置(Torque安装配置+Maui安装配置+SSH免验证设置+节点共享目录(NFS服务)设置+NIS服务设置+用户硬盘空间限制和核心使用限制设置)异常详细版
- 在.net应用程序中使用用户控件-.NET教程,组件控件开发(转载)
- Win8系统分配访问限制用户使用范围的设置技巧
- Windwos服务器远程桌面限制用户使用同一个会话的3种设置方法
- error MSB8011: 未能注册输出。请尝试启用“逐用户重定向”,或者使用提升的权限从命令提示符处注册该组件
- 使用extjs的Tree组件时,节点ID设置问题
- 使用sql server 2008 资源调控器限制指定用户查询所使用CPU资源
- .Net服务组件(ServicedComponent)简介及其使用
- MFC小程序003------MFC使用WebBrowser组件,在对话框中创建滚动视图,动态创建一个静态文本控件并设置鼠标单击的消息响应
- JSP通用分页组件 pager-taglib使用
- Internet Explorer® 8 之后,您可使用自动代理和自动检测功能,全局更改一些浏览器设置,而无需更改每个用户的计算机
- MFC小程序003------MFC使用WebBrowser组件,在对话框中创建滚动视图,动态创建一个静态文本控件并设置鼠标单击的消息响应
- 在ASP.NET中使用.NET组件
- Visual Studio 2008 简体中文正式版下载及序列号(无使用期限限制,正式版)
- .net的session详解 存储模式 存到数据库中 使用范围与大小限制 生命周期
- 在.net开发中使用Log4Net组件 转摘
- 在ASP.NET中使用.NET组件