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");//使用次数限制

 

posted @ 2024-06-08 08:55  Cmale  阅读(88)  评论(0编辑  收藏  举报