<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <link rel="Stylesheet" type="text/css" href= "../../default.css" /> <meta http-equiv="Content-Type" content= "text/html; charset=utf-8" /> <title>Шаг 1.6: Ограничиваем время работы программы</title> </head> <body> <h1>Шаг 1.6: Ограничиваем время работы программы</h1> <p>Вы можете ограничить время работы программы с момента запуска. Это может быть полезно для демонстрационных целей: выдается полноценный серийный номер, однако программа работает не более пяти минут. Система лицензирования не закрывает такую программу принудительно по истечении указанного времени, а лишь уведомляет об окончании времени выставлением флага состояния. Зададим ограничение времени работы в одну минуту, добавив в ini-файл строчку:</p> <pre class="code">TimeLimit=1 </pre> <p>Модифицируем программу следующим образом:</p> <pre class="code">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; } </pre> <p>Программа выводит состояние серийного номера в момент старта, потом считывает максимальное время работы, ждет, пока оно пройдет и выводит состояние номера еще раз. Для одной минуты мы получим следующий результат:</p> <pre class="code">state = 0 I will run for 1 minute(s) state = 0 After 1 minute(s): state = SERIAL_STATE_FLAG_RUNNING_TIME_OVER </pre> <p>Защищаемая программа должна анализировать состояние серийного номера с определенной периодичностью и завершить свою работу в случае появления такого флага. Система лицензирования не делает этого автоматически, т.к. программе может требоваться освободить какие-то ресурсы, записать данные в файл и т.д. Также программа может не завершаться по истечении данного времени, а переходить в более ограниченный режим работы. Система лицензирования оставляет эти вопросы на усмотрение разработчика.</p><br /> <a href="step17_maxbuild.htm">Следующий шаг</a> <br /> <br /> <br /> <br /> <hr noshade="noshade" size="1" /> <div align="center"> © 2006-2015 Copyright VMProtect Software </div> </body> </html>