方法1:在文件夹下写入固定日期,每次打开程序时读取这个日期并且和系统时间进行比较。
public bool CheckLicence()
{
string time= ReadTxt(TimeFile);
DateTime Now = DateTime.Now;
//Thread.Sleep(2000);
//DateTime time = DateTime.Now;
DateTime dt = DateTime.ParseExact(time, "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture);
if (DateTime.Now > dt)
{
MessageBox.Show("软件使用时间过期,请联系厂商");
return true;
}
else
{
// MessageBox.Show("未过期");
return false;
}
}
public static string ReadTxt(String filePath)
{
string strData = "";
try
{
string line;
// // 创建一个 StreamReader 的实例来读取文件 ,using 语句也能关闭 StreamReader
using (System.IO.StreamReader sr = new System.IO.StreamReader(filePath))
{
// // 从文件读取并显示行,直到文件的末尾
while ((line = sr.ReadLine()) != null)
{
//Console.WriteLine(line);
strData = line;
}
}
//}
catch (Exception e)
{
// // 向用户显示出错消息
// //Console.WriteLine("The file could not be read:");
// //Console.WriteLine(e.Message);
}
return strData;
}
方法二:写入到注册表中,程序第一次开启后,在注册表的目录下写入时间,之后每次程序运行系统时间会与设定时间进行比较。
private void button1_Click(object sender, EventArgs e)
{
RegistryKey mainkey = Registry.LocalMachine;
RegistryKey subkey = mainkey.OpenSubKey("SOFTWARE\\PosRegister\\time", true);
if (subkey == null)
{
object usetime = System.DateTime.Now.AddDays(15).ToLongDateString();
subkey = mainkey.CreateSubKey("SOFTWARE\\PosRegister\\time");
subkey.SetValue("Position", usetime);
MessageBox.Show("您可以免费试用软件15天!", "感谢您首次使用");
}
try
{
DateTime usetime = Convert.ToDateTime(subkey.GetValue("Position"));
DateTime daytime = DateTime.Parse(System.DateTime.Now.ToLongDateString());
TimeSpan ts = usetime - daytime;
int day = ts.Days;
if (day <= 0)
{
if (MessageBox.Show("软件试用期已到,请注册后再使用!", "提示", MessageBoxButtons.OK) == DialogResult.OK)
{
Application.Exit();
}
}
//else
//{
// MessageBox.Show("本软件的试用期还有" + day.ToString() + "天!", "提示");
//}
}
catch { }
subkey.Close();
}
在注册表的位置X86和X64写入的位置会不同,X86环境下注册表生成路径如下:计算机\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PosRegister\time。