Серийный номер C#, встроенный в программу

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

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

Я действительно не хочу создавать отдельный файл лицензии. Есть ли способ встроить это в саму программу? Или реестр является единственным другим вариантом (помимо онлайн-проверки и т. д.)


person Sev    schedule 05.01.2011    source источник


Ответы (4)


Вы не должны пытаться редактировать саму программу - это нарушит подписи/строгие имена, файл exe/dll почти наверняка будет заблокирован, и даже если вы теневое копирование: у многих пользователей не будет разрешение редактировать его в программных файлах (или как однократный щелчок).

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

person Marc Gravell    schedule 05.01.2011

Есть ли способ встроить это в саму программу?

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

*Чтобы доказать это самому себе, я создал небольшой исполняемый файл, который просто записывает значение строки и использовал шестнадцатеричный редактор, чтобы изменить значение строки.

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

Хранение сведений о регистрации в реестре, вероятно, является гораздо более простым решением.

person Brett    schedule 05.01.2011

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

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

http://www.vcskicks.com/hardware_id.php

person nik0lai    schedule 05.01.2011
comment
Просто прочитайте OP еще раз и осознайте, что я ответил неправильно, я бы все равно предпочел настройку реестра внедрению. - person nik0lai; 05.01.2011

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

person TJHeuvel    schedule 05.01.2011