C# 注册表法-限制软件使用次数
功能简介:
在注册表HKEY_CURRENT_USER\SOFTWARE下,如果没有则新建MyRegDataApp项,在MyRegDataApp项下面,如果没有则新建array值,并设置参数为 int UseCount次,
当软件执行一次程序,注册表次数减一,当参数为0时,每次启动都会提示并自动退出软件,代码如下:
一、包含命名空间
using Microsoft.Win32;
二、编写方法
private void UseCount(int usageCount,string valueName) { // 检查HKEY_CURRENT_USER\SOFTWARE下是否存在MyRegDataApp键 RegistryKey softwareKey = Registry.CurrentUser.OpenSubKey("SOFTWARE", true); RegistryKey myRegDataAppKey = softwareKey.OpenSubKey("MyRegDataApp", true); if (myRegDataAppKey == null) { // 如果不存在,则创建MyRegDataApp键 myRegDataAppKey = softwareKey.CreateSubKey("MyRegDataApp"); } // 检查MyRegDataApp下是否存在array项 if (myRegDataAppKey.GetValue(valueName) == null) { // 如果不存在,则创建array项 myRegDataAppKey.SetValue(valueName, usageCount); MessageBox.Show("您可以免费使用本软件" + usageCount + "次!", "感谢您首次使用"); // 关闭注册表键 myRegDataAppKey.Close(); softwareKey.Close(); return; } try { object usetime = myRegDataAppKey.GetValue(valueName);//读取键值,可使用次数 int newtime = Int32.Parse(usetime.ToString()) - 1; if (newtime < 0) { if (MessageBox.Show("如需继续使用,请联系软件开发者!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information) == DialogResult.OK) { // 关闭注册表键 myRegDataAppKey.Close(); softwareKey.Close(); Application.Exit(); } } else { MessageBox.Show("你还可以使用本软件 :" + usetime.ToString() + "次!", "确认", MessageBoxButtons.OK, MessageBoxIcon.Information); myRegDataAppKey.SetValue(valueName, (object)newtime);//更新键值,可使用次数减1 } } catch { //RegKey.SetValue(valueName, (object)10); //创建键值,存储可使用次数 //MessageBox.Show("您可以免费使用本软件10次!", "感谢您首次使用"); //return; } // 关闭注册表键 myRegDataAppKey.Close(); softwareKey.Close(); }
三、调用方法
UseCount(250, "array");//使用次数限制