Это уже становится интересно. Хорошо бы сделать какой-нибудь тестовый сервер для проверки этой теории.
Garrett сказал(а):
Ну, с UID машины я вроде разобрался! Это будет просто как бы одна из составляющих при генерации ключа.
Нет, ключ, он сам по себе. Это просто уникальный
ID, от балды. Главое, что бы он не повторялся. Я думаю генерация обычного GUID подойдет. Этот ключ генерится в момент покупки программы и теоретически отсылается на e-mail честного пользователя. Имя пользователя в данном случае не обязательно, но пусть будет для порядка. Если я буду устанавливать программу с произвольным ключем, то это не пройдет, т.к. он не был сгенерен и его нет в базе на сервере. Сразу отказ с сообщением "Неверный серийный номер". Т.е. первое, что установщик делает, это проверяет, есть ли на сервере такой ключ.
Поехали дальше. Ключ есть. Сервер требует от установщика ID компьютера (UID), на котором он (установщик) запущен. Установщик высылает на сервер UID (16 байт или строковое представление). Если UID на сервере отсутствует (пустое место, 0 и т.д.), то этот присланный UID заносится в базу на сервер и установщику возвращается "OK". Если UID на сервере присутствует и соответствует присланному UID, то тоже "OK". Если UID на сервере присутствует, но отличается от того, который был передан установщиком, то можно либо отказать в установке ("ABORT"), либо обновить в базе UID и увеличить счетчик установок на новую машину на 1. Когда счетчик дойдет до 3, то все, это будет последняя установка.
Я не знаю как это все должно выглядеть на сервере, но получается некий массив:
- Имя пользователя (не обязательно)
- E-mail (не обязательно)
- Серийный номер
- UID
- Счетчик установок на новый компьютер с данным серийным номером
Получается, что купив программу, пользователь по жизни будет привязан к одному серийнику с возможностью 3 раза установить программу на новый компьютер (3 раза может быть изменен его UID).
Что делать, если юзер потерял серийный номер? По имени и e-mail всегда можно восстановить серийник.
Да, конечно, из этого вытекает, что пользователь может 3 раза установить программу на разные компьютеры, но тем самым он исчерпает лимит установок и на двух первых компьютерах программа будет работать до первой переустановки. Вообщем-то приемлемо.
Как-то так.