2013-10-30 55 views
3

我從一個標準的初學者教程構建了一個小WindowsForm應用程序。您使用的按鈕和文本框等控件添加2個數字,並將結果顯示在文本框中。如何「保護日期」我的應用程序?

無論如何,我想這樣做是爲了當用戶點擊我的.exe時,它會在啓動程序/窗口之前檢查我內置的到期日期。也就是說,如果我的截止日期是今天10月30日,沒有任何反應,甚至沒有任何窗口顯示出來。但是,如果我的截止日期是10月31日,一切都會正常進行,並顯示窗口和窗體。但是,如果用戶要運行我的.exe文件,那麼明天10月31日(到期日)以及任何後天,都不會發生任何事情。

我覺得我的代碼看起來是這樣的:

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(); 
     } 
    } 
} 

我在哪裏插入代碼來檢查今天的日期與我的截止日期,以便沒有窗體被加載?

+2

我希望你不試圖做到這一點執行某種許可的,就像一個免費試用期或某事得到當前時間。 –

+0

考慮ping一個互聯網服務 - 這很容易通過改變PS系統時間來繞過。 – Gusdor

+3

@KrisVandermotten不是最糟糕的進攻。我和一個當他被解僱的時候偷偷摸摸的人一起工作。應用程序沒有在2月29日工作。花時間進行調試。 – Gusdor

回答

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文件中絕不是全面的,也不容易被利用的。

+0

通常,最好使用某種形式的強健許可證系統,將日期硬編碼到exe中。怎麼做? –

3

在Solution Explorer中查看Program.cs。您可以將此代碼添加到Main函數中,並且如果您指定的條件未滿足,請致電Application.Exit()離開應用程序。

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

但是,如果電腦沒有互聯網呢?雙刃劍。 – gunr2171

+0

感謝您的想法!如果電腦沒有互聯網,我可以不讓程序運行。 – phan

+0

@ gunr2171你必須做出決定。這是你的電話,讓應用程序進行與否。 –