我如何“约会”保护我的申请?

时间:2013-10-30 15:58:02

标签: c# winforms

我已经从标准的初学者教程中构建了一个小的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();
        }
    }
}

我会在哪里插入代码以检查今天的日期与我的到期日期,以便不加载任何表格?

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

可能你必须从一些“时间服务器”获得当前时间

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...
}

答案 2 :(得分:1)

你很可能在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中并不是完全可靠且容易被利用的。