Answer the question
In order to leave comments, you need to log in
How can you tell if a computer has been restarted?
There is a certain trial program that works for a limited period of time, after which it closes. Subsequent launch of this program is possible only after restarting the computer.
Question: how can the program determine if the computer has been restarted? Maybe there are similar api functions? Tried to google, found nothing on this issue.
Answer the question
In order to leave comments, you need to log in
https://msdn.microsoft.com/en-us/library/ms713418(...
timeGetTime() — возвращает время в миллисекундах с момента старта операционной системы
Так не будет работать. Запустили программу в час аптайма, потом ребутнулись, запустили её через 2 часа аптайма. А она не запускается, так как время больше.Запоминайте разницу между стартами. Если она меньше времени работы системы — перегрузки не было.Да, действительно... (((
.
программа работает в течение периода после СВОЕГО запуска или запуска системы? )))
можно ли её перезапуститить в течение этого периода?
от ответов на эти вопросы зависит предположение как именно устроена защита )
возможно она создаёт просто мьютекс в памяти, и не удаляет его, при перезапуске же все мьютексы, понятное дело стираются, и т.п.
В дополнение к ответу iBird Rose могу предложить поискать в EventLog-е самое крайнее сообщение с кодом "рестарт системы", но это всё равно менее эффективно, чем предложенное выше.
Спасибо!
То есть программа может при каждом старте считывать timeGetTime(), где-то его сохранять, и при последующем старте сравнивать с сохраненным, и если оно больше сохраненного, то отказываться запускаться, я правильно мыслю?
Программа сохраняет не сколько комп включен, а *когда* включен.
При перезагрузке, программа смотрит, что комп всетаки перезагрузили и запускается, если время совпало значит не перезапускали.
А вообще мой совет - сделай снапшот реестра и файловой системы (утилит много подобных). запусти программу, поработай пока триал не истекет. смотри что она сохранила, пробуй удалить/изменить и запускать программку пока она не запустится (подумав что перезагрузили комп.)
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question