Лицензирование Winforms, специфичное для машины - PullRequest
4 голосов
/ 02 апреля 2012

Я создаю маленькое приложение winforms, используя: Лицензирование ayende Rhino . Лицензирование работает нормально, я могу создавать лицензии и распространять их по своему усмотрению.

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

Может быть, кто-то реализовал это, или есть несколько советов, как мне это сделать? У меня есть доступ к веб-серверу, если это поможет.

Любая помощь очень ценится, как всегда.

Ответы [ 2 ]

1 голос
/ 02 апреля 2012

Зависит от того, насколько раздражающим вы хотите, чтобы ваши пользователи были честными. Вы могли бы реализовать HWID (см. Как быстро получить Hardware-ID в C #? о том, как их генерировать), который будет уникальным для системы, затем попросите вашу программу проверить, соответствует ли HWID найденному ID в место, где вы храните их онлайн (обычно с использованием базы данных).

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

Или вы можете объединить HWID с серийным номером, и ваше приложение сделает то же самое, чтобы проверить, совпадают ли они, но это может быть легко взломано средним взломщиком.

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

1 голос
/ 02 апреля 2012

Я не знаю, что такое лицензирование носорога.Для решения вашей проблемы обычно есть два подхода.

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

  2. Или, что мы делаем, генерируемкод, уникальный для этой машины (возможно, хэш некоторого уникального идентификатора машины, скажем, mac id), и клиент отправляет его вам.Затем вы перефразируете код и отправите его обратно, используя some logic.Теперь, когда клиент вводит этот код на свою машину, сделайте то же самое: извлеките тот же самый идентификатор машины, повторите то же самое, используя тот же some logic, и проверьте, совпадает ли он.

Я не могу думать ни о чем другом

...