Лучший способ распространять ознакомительную версию любого программного обеспечения?

Я хотел бы распространять свое программное обеспечение (приложение .net для Windows) с ознакомительной версией на 30 дней независимо от системного времени.

Я не хочу использовать Интернет для получения времени, так как программное обеспечение должно запускаться на машине без Интернета.

Может ли кто-нибудь предложить мне, как я могу распространять свое программное обеспечение без использования системного времени и Интернета?

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


person Xinus    schedule 20.03.2011    source источник
comment
Вы ищете существующее программное обеспечение или изобретаете велосипед?   -  person Snowbear    schedule 20.03.2011


Ответы (4)


Без внешней поддержки это невозможно.

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

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

Однако вы не можете сделать это только с помощью программного обеспечения.

person datenwolf    schedule 20.03.2011

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

person codymanix    schedule 20.03.2011

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

Что касается ограничения количества компьютеров:

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

person benc    schedule 20.03.2011
comment
Это не поможет, так как использование виртуальной машины легко обойдет любую локализованную схему лицензирования. Если программное обеспечение должно быть привязано к определенным установкам Windows, вместо самого ключа активации вы можете использовать его как один (из нескольких) источник для соленой хеш-функции. Затем вы можете зашифровать код с помощью этого хэша и во время выполнения расшифровать его по требованию с помощью рассчитанного на месте хэша. - person datenwolf; 20.03.2011
comment
Обратите внимание, что привязку к машине всегда можно взломать, и она может создавать проблемы, когда пользователи изменяют параметры машины. Таким образом, использование версии Windows, MAC-адреса, серийного номера ЦП и т. д. для создания хэша — это здорово, пока пользователь не получит ложноотрицательный результат, после чего он будет недоволен. - person John Browne; 25.03.2011

Вы определенно можете сделать это с помощью внешней системы лицензирования (отказ от ответственности: я работаю на производителя одной такой системы). И это может быть uncrackable, но это не бесплатно.

Если вы хотите создать свой собственный, вы можете сохранить зашифрованную функцию даты и времени — возможно, в реестре — а затем сравнить эту дату с системной датой/временем. Установите сохраненное значение даты вперед при запуске приложения, если системная дата позже сохраненной даты. Если системная дата более ранняя, чем сохраненная, рассмотрите возможность блокировки приложения до тех пор, пока пользователь не свяжется с вами, чтобы объяснить, почему он установил свою системную дату назад. Это не является надежным на многих уровнях, но это лучше, чем просто смотреть только на системную дату. Альтернативой является выполнение HTTP-вызова на известный сертифицированный сервер времени и сравнение системной даты и даты установки с этим сервером.

person John Browne    schedule 25.03.2011