Где хранить «только для чтения», «несъемные» даты установки приложения для демонстрационных целей - PullRequest
2 голосов
/ 06 июля 2010

Я должен хранить дату установки демо где-нибудь на клиентском ПК. Демо-период приложения рассчитывается на дату установки. Очевидно, что пользователи не могут редактировать или удалять это значение.

Как это можно сделать?

  • Мы не можем использовать реестр HKLM из-за Citrix
  • Невозможно использовать / Program Files из-за Vista
  • Не могу использовать / Документы и настройки из-за Citrix
  • эм ... что-нибудь еще осталось ... кроме того, чтобы спросить пользователя "Выберите место, где вы хотите сохранить дату установки" ..: -)

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

Ответы [ 3 ]

2 голосов
/ 06 июля 2010

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

Таким образом, с этим требованием, вы можете только сохранить его на удаленном компьютере и получить к нему доступ через какое-то сетевое соединение.

Другим возможным решением для достижения вашей цели будет использование асимметричного шифрования.Во время установки вы запрашиваете подписанную подпись на вашем собственном сервере (на основе идентифицирующей информации с клиентского компьютера, даты и т. Д.), Которая затем сохраняется на компьютере вашего клиента и расшифровывается с помощью открытого ключа.В этом случае вам потребуется только подключение к Интернету при установке.

2 голосов
/ 06 июля 2010

Вы можете создать простой файл с датой, вместе с определенной информацией о машине и подписать ее.

Правило будет таким: если файл присутствует и , подпись действительна и среда правильная и дата еще в будущем, только тогда начнется демонстрация.

Это предотвращает изменение файла или использование файла издругая машина.Проблема не распространяется на то, что можно изменить системную дату ...


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

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

1 голос
/ 06 июля 2010

Я бы, вероятно, выбрал одну из двух возможностей:

  1. Жесткий код даты «использовать перед» в EXE, чтобы все копии EXE перестали работать последанная дата.Конечно, тогда вам, возможно, придется загружать новые EXE-файлы время от времени с новыми датами.В зависимости от вашей ситуации это может быть достаточно хорошим решением.

  2. Вариант предложения Andreas_D: при установке создайте бинарный файл, который содержит много раздуванияи дата установки нетривиальным образом.Это действительно легко осуществить.Обычный пользователь никогда не сможет обновить дату в таком файле, используя шестнадцатеричный редактор (не менее Блокнот, который уничтожит файл, рассматривая его как файл ANSI или UTF-8 или ... текстовый файл).Пользователь, конечно, может удалить файл, но ваше приложение не запустится без этого файла и даты в нужном диапазоне.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...