C# 操作注册表来限制软件使用次数

C# 可以通过操作注册表来限制软件的使用次数,每次打开软件先获取注册表内的值,然后和程序内设置的常量的值做对比,如果注册表的值小于常量的值,程序可以打开,然后注册表的值再加一,如此反复,直到注册表的值大于常量的值,程序就无法打开了。

RegistryKey retKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("software", true).CreateSubKey("mrwxk").CreateSubKey("mrwxk.ini");      //限制软件使用次数  方法一,使用注册表
            Int32 tLong;
            try
            {
                tLong = (Int32)Registry.GetValue("HKEY_CURRENT_USER\\SOFTWARE\\tryTimes", "UseTimes", 0);
                MessageBox.Show("感谢您已使用了" + tLong + "次", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch
            {
                //首次使用软件
                Registry.SetValue("HKEY_CURRENT_USER\\SOFTWARE\\tryTimes", "UseTimes", 0, RegistryValueKind.DWord);
                MessageBox.Show("欢迎新用户使用本软件", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            //获取软件已经使用的次数
            tLong = (Int32)Registry.GetValue("HKEY_CURRENT_USER\\SOFTWARE\\tryTimes", "UseTimes", 0);
            if (tLong < 10)
            {
                int Times = tLong + 1; //计算软件本次是第几次使用
                Registry.SetValue("HKEY_CURRENT_USER\\SOFTWARE\\tryTimes", "UseTimes", Times); //将软件使用次数写入注册表
            }
            else
            {
                //Registry.SetValue("HKEY_CURRENT_USER\\SOFTWARE\\tryTimes", "UseTimes", 0); //将软件使用次数写入注册表 ///////////////////////////////////////
                MessageBox.Show("试用次数已到", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                Application.Exit(); //退出应用程序
            }

注意:
第一句代码有时候会这样写:

RegistryKey retKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("software", true).CreateSubKey("mrwxk").CreateSubKey("mrwxk.ini");

注意区分LocalMachine和CurrentUser的区别,LocalMachine要求的权限比较高,编译器可能编辑不过,所以我们可以用CurrentUser来完成操作。

猜你喜欢

转载自blog.csdn.net/qq_43024228/article/details/86604203