Как я могу проверить, установил ли пользователь свои часы назад? - PullRequest
2 голосов
/ 17 ноября 2009

В моей настольной программе я хочу проверить это, чтобы увидеть, установил ли пользователь свои часы назад.

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

Для Windows XP я использовал такие файлы как:

c:\win386.swp
c:\windows\user.dat
and several others.

Два вопроса:

  1. Это приличный способ сделать это, или есть что-то лучше?

  2. (Предполагая, что ответ на вопрос 1 «приличный») Какие бы файлы Windows Vista и Windows 7 можно было сравнить с


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

Как выяснилось, ваши ответы и мои исследования других связанных вопросов StackOverflow и упомянутых статей привели меня к решению о гораздо более простой схеме. Мои пробные пользователи уже должны получить ключ для использования пробной версии. Я зарегистрировал дату, встроенную в ключ. Мне действительно не нужно проверять установку часов назад. Вместо этого я просто вижу, находится ли текущее время между зарегистрированной датой и зарегистрированной датой плюс n дней.

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

Ответы [ 5 ]

3 голосов
/ 17 ноября 2009

Файлы Windows всегда будут иметь более раннюю дату, лучше всего проверить дату создания или изменения вашей программы с системной датой. Или в любой момент, когда ваша программа завершает работу, обязательно запомните метку времени и сравните ее с тем, когда вы в следующий раз запустите программу, и всегда есть NTP: http://en.wikipedia.org/wiki/Network_Time_Protocol

2 голосов
/ 17 ноября 2009

Это не прямой ответ, просто предложить какое-то мнение и рекомендации. Слишком долго для меня, чтобы добавить в качестве комментария.

Если цель заключается в создании ограниченного по времени программного обеспечения для демонстрационной / пробной версии, нам необходимо найти баланс между тем, насколько вы собираетесь его внедрять, и тенденцией к тому, чтобы пользователи его взломали.

Я часто говорю людям, что если ваше программное обеспечение привлекает хакеров, это, вероятно, что-то полезное / хорошее. Нет смысла защищать программное обеспечение, которое никто не находит полезным.

Как бы то ни было, оставим в стороне философский разговор, ниже пара хороших прочтений по этой теме:

Как внедрить ограниченную по времени пробную версию на форуме Джоэла
Ограниченная по времени пробная версия и сертификация Windows на SO
Нужна консультация по внедрению ограниченного по времени испытания на SO

2 голосов
/ 17 ноября 2009

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

0 голосов
/ 17 ноября 2009

Windows предоставляет API для уведомления об изменениях системного времени. Например, один это элемент управления sysinfo.ocx activex, предоставленный здесь .

0 голосов
/ 17 ноября 2009

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

...