# Шаг 1.7: Ограничиваем бесплатные обновления

Схема работы

В момент защиты приложения VMProtect запоминает дату, когда это происходило. Эта дата является для системы лицензирования датой сборки приложения. В серийном номере можно прописать максимальную дату сборки, для которой подойдет этот номер. Таким образом, если при создании ключа Вы пропишете в него текущую дату + 1 год, то ключ подойдет ко всем релизам Вашей программы, которые вы выпустите в течение года. К релизу, выпущенному через год и 1 день ключ уже не подойдет и у пользователя будет выбор: пользоваться более старой версией или купить новый ключ, который будет работать еще год.

Пробуем на деле

Поместите в ini-файл строчку вида MaxBuildDate=YYYYMMDD - например, такую:

    MaxBuildDate=20000101

В тестовом режиме система лицензирования считает датой сборки сегодняшнее число, поэтому важно, чтобы дата, указанная в строке, уже прошла. Т.е. максимум - вчера. Модифицируйте исходный код функции main(), чтобы он выглядел так:

    int main(int argc, char **argv)
    {
            char *serial = "Xserialnumber"; // зададим номер непосредственно в коде для простоты

            int res = VMProtectSetSerialNumber(serial);
            print_state(res);

            if (res)
            {
                    VMProtectSerialNumberData sd = {0};
                    VMProtectGetSerialNumberData(&sd, sizeof(sd));
                    printf("max. build date: y = %d, m = %d, d = %d\n", sd.dtMaxBuild.wYear, sd.dtMaxBuild.bMonth, sd.dtMaxBuild.bDay);
                    printf("please register!\n");
                    return 0;
            }

            printf("I'm registered\n");

            return 0;
    }

Тогда при запуске программы вы увидите следующее:

    state = SERIAL_STATE_FLAG_MAX_BUILD_EXPIRED
    max. build date: y = 2000, m = 1, d = 1
    please register!

Заменив в ini-файле дату на сегодняшнюю или завтрашнюю, мы получим "рабочую" программу:

    state = 0
    I'm registered

Удалите из ini-файла строку MaxBuildDate=..., чтобы она не мешала нам в дальнейшем.

Следующий шаг

© 2006-2015 Copyright VMProtect Software