Вопрос для интервью: Разработайте приложение, которое может отображать истечение пробного периода через 30 дней без внешнего хранилища. - PullRequest
1 голос
/ 29 апреля 2010

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

Вопрос: Как этого добиться?

Спасибо
Bala

- Edit
Я думаю, что легко определить место для вставки вопроса работы. Во всяком случае, я напишу вопрос ясно. «внешнее хранилище» означает, что не следует использовать какое-либо хранилище, такое как файл, реестр, сеть или что-либо еще. У вас есть только ваша программа.

Ответы [ 5 ]

5 голосов
/ 29 апреля 2010

Используйте дату изменения файла, содержащего программу, в качестве даты установки.

1 голос
/ 29 апреля 2010

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

Если хотите, подпишите дату закрытым ключом, чтобы его нельзя было взломать. Включите в приложение открытый ключ и расшифруйте дату. Если не правильно подписано, hasta la vista, детка.

0 голосов
/ 29 апреля 2010

Я не знаю, возможно ли это, так как большая часть работы, которую я проделал, была со встроенными системами, в которых мне даже не нужно касаться операционной системы. Но возможно ли следующее?

При компиляции вашей программы оставьте немного дополнительного пространства в конце (скажем, 8 байт), все установите на 0. Когда ваше приложение запущено, оно извлекает эти байты и, если они все равны 0, заменяет их текущим время (это часть, в которой я не уверен. Позволяет ли ОС делать это? Если нет, то могут быть некоторые обходные пути, использующие несколько процессов.) В противном случае, если разница во времени превышает 30 дней, она уведомляет пользователь, который пробный период закончился.

Конечно, этот метод будет уязвим для сброса системных часов.

0 голосов
/ 29 апреля 2010

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

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

Итак, подведем итог: на самом деле это невозможно.

0 голосов
/ 29 апреля 2010

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

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