Лучшее, что я придумал, это иметь второй параметр реестра, в котором хранится дата и время локального компьютера. Я обновляю это, когда приложение запускается и закрывается.
Затем, когда вы проверяете свой параметр реестра на дату истечения срока действия, вы также проверяете эту другую дату, чтобы убедиться, что она старше текущей даты компьютера. Если нет, они подделывают время, и я их закрываю.
Если они умны и знают, что вы делаете (маловероятно), они могут продлить пробный период, переместив время на свой компьютер обратно после последнего закрытия. Это будет работать некоторое время, но в итоге у них не хватит времени.
PROs: уменьшает вероятность фальсификации, не требует подключения к Интернету
МИНУСЫ: Не работать с виртуальными машинами, которые имеют UNDO дисков, пользователь может размер испытательный срок, но не долго, требует написания в реестр.
ПРИМЕЧАНИЯ: Убедитесь, что вы всегда сохраняете время UTC в случае, если летнее время позволяет вернуться назад.
Вы должны убедиться, что в вашем установочном пакете создан первоначальный параметр реестра. Таким образом, если параметр реестра НЕ существует, вы можете предположить, что они попытались удалить его, чтобы вмешаться в пробный период - заблокировать их. В конце концов, если вы сделаете первоначальный параметр реестра в своем приложении, как вы узнаете, что это первый раз, когда он запущен, или тысячный, и они просто продолжают удалять записи в реестре?
один из способов получения фактической даты - запрос сервера NIST; если вы используете шифрование, это означает, что все эти шаги находятся в вашем коде, и это довольно тривиально для предотвращения. – Plutonix