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

Вы можете ограничить время работы программы с момента запуска. Это может быть полезно для демонстрационных целей: выдается полноценный серийный номер, однако программа работает не более пяти минут. Система лицензирования не закрывает такую программу принудительно по истечении указанного времени, а лишь уведомляет об окончании времени выставлением флага состояния. Зададим ограничение времени работы в одну минуту, добавив в ini-файл строчку:

    TimeLimit=1

Модифицируем программу следующим образом:

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

            int res = VMProtectSetSerialNumber(serial);
            print_state(res);
            if (res) return 0;

            VMProtectSerialNumberData sd = {0};
            VMProtectGetSerialNumberData(&sd, sizeof(sd));
            printf("I will run for %d minute(s)\n", sd.bRunningTime);
            print_state(VMProtectGetSerialNumberState());
            Sleep(60 * 1000 * sd.bRunningTime);
            printf("After %d minute(s):\n", sd.bRunningTime);
            print_state(VMProtectGetSerialNumberState());

            return 0;
    }

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

    state = 0
    I will run for 1 minute(s)
    state = 0
    After 1 minute(s):
    state = SERIAL_STATE_FLAG_RUNNING_TIME_OVER

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

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

© 2006-2015 Copyright VMProtect Software