如何“日期保护”我的应用程序

本文关键字:我的 应用程序 日期保护 保护 日期 如何 | 更新日期: 2023-09-27 18:37:25

我从一个标准的初学者教程中构建了一个小型的WindowsForm应用程序。 使用按钮和文本框等控件将 2 个数字相加并使结果显示在文本框中的类型。

无论如何,我想这样做,以便当用户单击我的.exe时,它会在启动程序/窗口之前检查我的内置到期日期。 也就是说,如果我的到期日期是今天 10 月 30 日,则什么都不会发生,甚至没有窗口表单显示。 但是,如果我的到期日期是 10 月 31 日,则一切正常进行,窗口和表单会显示。 但是,明天 10 月 31 日(到期日期)和后天的任何一天,如果用户运行我的.exe,什么都不会发生。

我认为我的代码看起来像这样:

DateTime expiration = new DateTime(2013, 10, 31) //Oct. 31, 2013
If (DateTime.Today < expiration) //proceed normally
else // do nothing, nothing happens for the user

从教程中,我的大部分理解仅限于在公共 Form1 中编写的代码: 形成代码的一部分:

namespace WindowsFormsApplication4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
    }
}

我将在哪里插入代码以根据我的到期日期检查今天的日期,以便不加载任何表单?

如何“日期保护”我的应用程序

查看解决方案资源管理器中的Program.cs。可以在 Main 函数中添加此代码,并在未满足指定的条件时调用 Application.Exit() 离开应用程序。

我不建议为此使用"本地时间",因为用户可以随时自由更改它。

可能您必须从某个"时间服务器"获取当前时间

private static readonly DateTime expiration = new DateTime(2013, 10, 31);
static void Main()
{
    DateTime currentTime = GetTimeFromSomeTimeServer();//Implement yourself
    if (currentTime.Date >= expiration.Date)
    {
        return;//Dont run the app
    }
    //Rest of your code...
}

您很可能希望在Program.cs文件中使用它,这是一个简单的例子

static class Program
{
    static DateTime expiration = new DateTime(2013, 10, 31);
    /// <summary>
    /// The main entry point for the application
    /// </summary>
    [STAThread]
    static void Main()
    {
        if (DateTime.Today < expiration.Date) 
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
        else
        {
            Application.Exit();
        }
    }
}
但是,请记住

,这并不是强制执行可过期应用程序(例如试用软件)的推荐方法。一般来说,最好使用某种形式的强大许可系统,将日期硬编码到 exe 中绝不是完全证明且易于利用的。