winform程序如何通过操作注册表来实现限制使用次数
2012-04-28 09:31
911 查看
今天闲来无事,看了下以前自己写的程序,然后就找着了这个操作注册表的程序..依然还是 主要是自己记录方便以后看
先来看下效果吧..
下面贴出主要代码:
在窗口的load事件或者构造函数里调用SetRegeditValue 方面 在注册表中就会生成一个节点
我们操作的注册表都在HK_lOCAL_MACHINE中,至于其他的都是怎么用的,我也不太清楚,以后在探究 现在主要就是说这个。。 打开选中的注册表项,你就能找到你创建的节点.. 如图:
然后就是你自己定义了 往注册表里存什么数据, 这样就能实现限制使用次数的功能..至于注册,那里就不说了,因为我写的这东西其实对于懂的人来说,改下注册表就什么都不管用了,,最好的限制使用应该就是用加密狗之类的工具..网上是这么说的,没用过.
先来看下效果吧..
下面贴出主要代码:
/// <summary> /// 在注册表中创建一个键 并指定值 /// </summary> private void SetRegeditValue() { //判断是否存在指定节点 //如果存在 不影响 继续判断节点下的键值 //如果不存在 则建立一个新的节点 if (!IsThisNode("useTime")) { RegistryKey key = Registry.LocalMachine;//获取根节点 key.CreateSubKey("SOFTWARE\\useTime");//创建指定节点 } //判断是否存在指定键 //如果不存在 则创建一个键 //如果存在 则进行else里代码 if (!IsThisKey("nowCount", "useTime")) { RegistryKey key = Registry.LocalMachine;//获取注册表根节点 RegistryKey software = key.OpenSubKey("software\\useTime", true);//获取soft下的创建的节点 software.CreateSubKey("nowCount");//创建指定键 software.SetValue("nowCount", 14);//给指定键赋值 MessageBox.Show("感谢您的使用试用版本,还剩14次使用机会", "温馨提示", MessageBoxButtons.OK, MessageBoxIcon.Information); Main m = new Main(); m.Show(); } //如果存在指定键 else { RegistryKey Key = Registry.LocalMachine;//获取注册表根节点 RegistryKey Zane = Key.OpenSubKey("software\\useTime", true);//获取soft下指定节点下的键 int count = 0; try { count = Convert.ToInt32(Zane.GetValue("nowCount"));//取得键值 } catch (Exception ex) { count = 0; } //大于0 每次成功运行后次数减1 if (count>0) { Zane.SetValue("nowCount", count - 1); MessageBox.Show("感谢您的使用试用版本,还剩" + (count - 1) + "次使用机会", "温馨提示", MessageBoxButtons.OK, MessageBoxIcon.Information); Main m = new Main(); m.Show(); } //等于0已经不能使用 必须注册 //注册我也没啥经验 就随便用了个CPU的ID编码来实现了 else if (count == 0) { MessageBox.Show("试用次数已经用完,请购买注册码继续使用", "温馨提示", MessageBoxButtons.OK, MessageBoxIcon.Information); Register r = new Register();//注册窗体 r.Show(); } else { Main m = new Main(); m.Show(); } Zane.Close(); } } /// <summary> /// 判断注册表中是否有指定节点 /// </summary> /// <param name="nodeName"></param> /// <returns></returns> private bool IsThisNode(string nodeName) { string[] subKeyName; RegistryKey top = Registry.LocalMachine;//得到注册表根目录下的所有节点 RegistryKey softwatre = top.OpenSubKey("SOFTWARE");//取得soft节点 subKeyName = softwatre.GetSubKeyNames();//取得soft节点下的所有节点名称 foreach (string keyNames in subKeyName)//开始与指定的键对比 { if (keyNames == nodeName) { top.Close(); return true; } } top.Close(); return false; } /// <summary> /// 判断是否有健存在 /// </summary> /// <param name="keyName"></param> /// <returns></returns> private bool IsThisKey(string keyName, string nodeName) { string[] subKeyName; RegistryKey top = Registry.LocalMachine;//得到注册表根目录下的所有节点 RegistryKey softwatre = top.OpenSubKey("SOFTWARE\\" + nodeName);//取得soft节点下的指定节点 subKeyName = softwatre.GetSubKeyNames();//取得soft节点下的所有键名称 foreach (string nodeNames in subKeyName)//开始与指定的键对比 { if (nodeNames == keyName) { top.Close(); return true; } } top.Close(); return false; }
在窗口的load事件或者构造函数里调用SetRegeditValue 方面 在注册表中就会生成一个节点
我们操作的注册表都在HK_lOCAL_MACHINE中,至于其他的都是怎么用的,我也不太清楚,以后在探究 现在主要就是说这个。。 打开选中的注册表项,你就能找到你创建的节点.. 如图:
然后就是你自己定义了 往注册表里存什么数据, 这样就能实现限制使用次数的功能..至于注册,那里就不说了,因为我写的这东西其实对于懂的人来说,改下注册表就什么都不管用了,,最好的限制使用应该就是用加密狗之类的工具..网上是这么说的,没用过.
相关文章推荐
- WinForm通过操作注册表实现限制软件使用次数的方法
- winform通过注册表限制软件使用次数(转自顺平小荷博客)
- winform通过注册表限制软件使用次数
- winform通过注册表限制软件使用次数
- winform通过注册表限制软件使用次数
- c#操作注册表实现对软件试用次数的限制
- 如何使用vs对程序进行打包?怎么通过注册表获取安装路径?
- 浅谈:如何用C#实现简单的带有验证码及密码使用MD5加密的“登录”WinForm小程序
- 限制程序中某类操作的执行次数的算法设计及C代码实现
- C#中Winform程序中如何实现多维表头【不通过第三方报表程序】
- c# 实现 通过写入注册表 记住 winform程序 登录名
- 如何实现程序长时间未操作退出
- 如何在BPM中使用REST服务(1):通过程序访问网页内容
- C#实现限制软件的使用次数
- winsocket使用c实现文件传输具体如何操作?
- 如何使用shell限制指定用户shell程序的网络带宽
- C# Winform程序如何使用ClickOnce发布并自动升级(图解)
- win8如何使用Metro界面卸载程序操作介绍
- c#实现的破解程序--针对软件使用时间限制
- PHP程序中使用PDO对象实现对数据库的增删改查操作的示例代码