Каким образом можно определить, был ли компьютер перезагружен?
Имеется некая триал-программа, работающая ограниченный отрезок времени, после чего закрывается. Последующий запуск этой программы возможен только после перезагрузки компьютера.
Вопрос: каким образом программа может определить, был ли компьютер перезагружен? Может быть, есть подобные api-функции? Пробовал гуглить, ничего не нашел по этому вопросу.
Так не будет работать. Запустили программу в час аптайма, потом ребутнулись, запустили её через 2 часа аптайма. А она не запускается, так как время больше.
.
Да, действительно... (((
Запоминайте разницу между стартами. Если она меньше времени работы системы — перегрузки не было.
программа работает в течение периода после СВОЕГО запуска или запуска системы? )))
можно ли её перезапуститить в течение этого периода?
от ответов на эти вопросы зависит предположение как именно устроена защита )
возможно она создаёт просто мьютекс в памяти, и не удаляет его, при перезапуске же все мьютексы, понятное дело стираются, и т.п.
Программа работает в течение периода после СВОЕГО запуска. К своему стыду, о мьютексах слышу впервые в жизни )))
Кстати, прошерстил в отладчике используемые прогой api, ни timeGetTime, ни GetTickCount не нашел.
В дополнение к ответу iBird Rose могу предложить поискать в EventLog-е самое крайнее сообщение с кодом "рестарт системы", но это всё равно менее эффективно, чем предложенное выше.
Спасибо!
То есть программа может при каждом старте считывать timeGetTime(), где-то его сохранять, и при последующем старте сравнивать с сохраненным, и если оно больше сохраненного, то отказываться запускаться, я правильно мыслю?
Так не будет работать. Запустили программу в час аптайма, потом ребутнулись, запустили её через 2 часа аптайма. А она не запускается, так как время больше.
Программа сохраняет не сколько комп включен, а *когда* включен.
При перезагрузке, программа смотрит, что комп всетаки перезагрузили и запускается, если время совпало значит не перезапускали.
А вообще мой совет - сделай снапшот реестра и файловой системы (утилит много подобных). запусти программу, поработай пока триал не истекет. смотри что она сохранила, пробуй удалить/изменить и запускать программку пока она не запустится (подумав что перезагрузили комп.)