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来完成操作。