2014-02-06 2 views
0

Мне любопытно, каковы плюсы и минусы следующего кода для прекращения запуска приложения по истечении определенного срока.Использование DateTime для прекращения действия приложения?

DateTime expire = new DateTime(2014, 2, 20); 

if (DateTime.Now > expire) 
      { 
       MessageBox.Show("This Software's License has expired!"); 
       this.Close(); 
      } 

Я рассматриваю, используя это в небольших бета-версии некоторых программ я написал, но интересно, если его дурак доказательства или может класс DateTime быть «подделан» с помощью установки часов назад в системе? Я не совсем уверен, что DateTime просто полагается на то, что когда-либо система ОС думает о времени или нет.

+0

Возможный дубликат [Создать приложение, срок действия которого истекает после пробного периода] (http://stackoverflow.com/questions/1417848/create-an-application-that-will-expire-after-a-trial -период) –

ответ

2

Да, DateTime.Now будет сообщать текущее системное время и может быть изменен пользователем, изменяющим их часы.

Если кто-то действительно хочет продолжать использовать ваше приложение после истечения срока действия лицензии, в любом случае может быть довольно легко взломать этот вид техники. Но это не означает, что этот тип подхода не имеет для вас никакого значения.

Там уже много дискуссий на SO вокруг этого типа идеи:

Чтобы сэкономить время, вот несколько верхние наконечники:

  • Если люди готовы взломать приложение или даже просто сбросить системные часы, чтобы не платить за лицензию, это, вероятно, не стоит вашего времени, чтобы попытаться остановить их, а минимальная проверка в вашем вопросе, возможно, все это стоит делать.
  • вместо того, чтобы отключать ваше приложение, когда срок действия лицензии истек, возможно, отключить некоторые функции, поэтому приложение остается как объявление для полного.
Смежные вопросы