Собственно, зачем генерировать отдельный GUID при покупке? Его ведь и вправду можно потерять. По моему мнению, лучше изначально вшить серийный номер в саму программу и распространять в таком виде - тогда уже ни что ни куда не потеряется точно.
Мне дело так представляется:
1. Программа распространяется с вшитым в нее серийником - сложность серийного номера значения не имеет, поскольку его основная функция будет заключаться в навигации по базе данных сервера и поиске прикрепленного к этому серийнику ID оборудования пользователя. Самим же "паспортом" пользователя будет являеться ID оборудования. Т.е. серийным номером вполне может быть какой-либо порядковый номер. Важным моментом является то, что необходимо собрать три ID номера оборудования пользователя. Например: жесткий диск, материнская плата и видеокарта.
2. При первом запуске (установке) программа собирает ID с указанных устройств и ищет ключ в реестре. Если его не находит, ищет Интернет-соединение и отсылает свой серийный номер вместе с собранными ID оборудования на сервер. Там происходит прикрепление серийника к ID и генерация ключа на основе этих же полученных ID оборудования пользователя. После чего этот ключ высылается пользователю.
3. Полученный ключ записывается в реестр и проводится его валидация по ID номерам оборудования пользователя (на основе того же алгоритма, по которому этот ключ был сгенерирован на сервере). В дальнейшем эта процедура валидации ключа будет происходить каждый раз при запуске программы.
4. В случае замены одного из устройств, с которого считывается ID, ключ записанный в реестре не проходит проверку. Тогда, как и во втором пункте, программа ищет интернет-соединение и вновь вместе со своим серийником отсылает собранные три ID номера оборудования пользователя на сервер. Там происходит сверка ID. В случае не совпадения одного из трех высланных ID, но совпадении двух других хранящихся на сервере, несовпадающий ID перезаписывается на новый. Таким образом, пользователь может делать абгрейд оборудования без потери лицензии. Единственный минус - за раз не возможно абгрейдить более одного устройства. Но зато, количество абгрейдов не ограниченно.
Так почему количество собранных у пользователя ID должно ровняться трем? Потому что количество ID должно быть более одного и не должно быть четным, а допустимое количиство заменяемых устройств не более одного за раз. Да бы два "друга" не могли по братски поделиться пополам оборудованием и перезаписывать базу данных сервера по очереди, каждый со своего компьютера - таким образом, они смогли бы по очереди использовать одну программу на двух разных ПК. Это полностью исключается при 3-х ID и разрешенной разовой замене не более одного устройства.
Ну все остальное думаю уже понятно и уже не раз описывалось в предыдущих постах.
Мне дело так представляется:
1. Программа распространяется с вшитым в нее серийником - сложность серийного номера значения не имеет, поскольку его основная функция будет заключаться в навигации по базе данных сервера и поиске прикрепленного к этому серийнику ID оборудования пользователя. Самим же "паспортом" пользователя будет являеться ID оборудования. Т.е. серийным номером вполне может быть какой-либо порядковый номер. Важным моментом является то, что необходимо собрать три ID номера оборудования пользователя. Например: жесткий диск, материнская плата и видеокарта.
2. При первом запуске (установке) программа собирает ID с указанных устройств и ищет ключ в реестре. Если его не находит, ищет Интернет-соединение и отсылает свой серийный номер вместе с собранными ID оборудования на сервер. Там происходит прикрепление серийника к ID и генерация ключа на основе этих же полученных ID оборудования пользователя. После чего этот ключ высылается пользователю.
3. Полученный ключ записывается в реестр и проводится его валидация по ID номерам оборудования пользователя (на основе того же алгоритма, по которому этот ключ был сгенерирован на сервере). В дальнейшем эта процедура валидации ключа будет происходить каждый раз при запуске программы.
4. В случае замены одного из устройств, с которого считывается ID, ключ записанный в реестре не проходит проверку. Тогда, как и во втором пункте, программа ищет интернет-соединение и вновь вместе со своим серийником отсылает собранные три ID номера оборудования пользователя на сервер. Там происходит сверка ID. В случае не совпадения одного из трех высланных ID, но совпадении двух других хранящихся на сервере, несовпадающий ID перезаписывается на новый. Таким образом, пользователь может делать абгрейд оборудования без потери лицензии. Единственный минус - за раз не возможно абгрейдить более одного устройства. Но зато, количество абгрейдов не ограниченно.
Так почему количество собранных у пользователя ID должно ровняться трем? Потому что количество ID должно быть более одного и не должно быть четным, а допустимое количиство заменяемых устройств не более одного за раз. Да бы два "друга" не могли по братски поделиться пополам оборудованием и перезаписывать базу данных сервера по очереди, каждый со своего компьютера - таким образом, они смогли бы по очереди использовать одну программу на двух разных ПК. Это полностью исключается при 3-х ID и разрешенной разовой замене не более одного устройства.
Ну все остальное думаю уже понятно и уже не раз описывалось в предыдущих постах.