Предположим вы написали супер-крутую программу (если это действительно так, то я удивлен что вы это читаете). И вы не хотите чтобы кто-то ей пользовался не заплатив за нее, или просто не зарегистрировавшись. Можно просто выдавать программы только тем, кто заплатит, но тогда они в свою очередь один раз заплатив за нее могут сами распространять ее, да и вообще путь этот крайне неэффективный. Или например вы хотите чтобы программа была только демоверсией, а за полную нужно зарегистрироваться. Так поступают многие разработчики, и даже всеми любимый Win95 использует для регистрации сочетание серийного номера и регистрационного кода. В этой статье мы разберем как это сделать. Конечно - эта программа не очень хорошая защита, обойти ее очень легко, но она показывает как это можно сделать.


Шаг №1 - Постановка задачи

Вообще в этой программе можно сделать очень много. Например сделать так, чтобы какая то программа работала, но через каждую минуту просила зарегистрироваться, или чтобы не были возможны некоторые функции программы. Но мы сделаем так, чтобы без регистрации нельзя было просто зайти в программу. В качестве самой программы мы возьме самую крутую нашу прогу - Hello World :)

Надо сделать так, чтобы программа при входе в нее проверяла, зарегистрировался ли пользователь, и если нет то просила его об этом, а если да, то выводила его на программу -Hello World. Самое простое решение - записывать сведения о регистрации в файл, к которому у пользователя не будет доступа ,он его просто не должен найти (этого можно достичь спрятав файл куда-нибудь в Windows, но наша программа будет записывать его в корневой каталог диска C). В файле r.txt будет записанно - зарегистрированна ли программа.

Нам нужно чтобы у каждой программы был свой серийный номер, то есть на каждом компьютере он был разным, но при каждом запуске программы на одном компьютере - одинаковым. Опять же самое простое решение - генерировать код и записывать его в файл. При этом нужно не перезаписывать старый номер, а записывать его только тогда, когда старого нет - то есть при первом запуске программы на компьютере.

Далее - процесс регистрации. Ну это уже зависит не от программы. Вы просто должны каким-либо образом отдать юзеру код - который соответствует его серийному номеру. Например по e-mail, по телефону или как-нибудь еще. Юзер сообщает вам серийный номер, а вы сообщаете код (например после того как он заплатит).


Шаг №2 - Визуальное проектирование

У вас в проекте должно быть 2 формы : одна - программа Hello World, а вторая - регистрация. Сначала сделаем самое легкое - программу Hello World , в этой статье я не буду говорить как это делать, это все описанно в первой программе только скажу, что имя формы у меня в программе - prog

Далее делаем форму с именем frmSn. На ней должны быть такие элементы :

Этикетка (Label) : Caption - Серийный номер
Этикетка (Label) : Caption - Регистрационный код
Текстовое поле (TextBox) : Свойство Text должно быть пустым, имя - txtSn
Текстовое поле (TextBox) : Свойство Text должно быть пустым, имя - txtRc
Кнопка (CommandButton) : Имя - Command1, Caption - Регистрировать
Кнопка (CommandButton) : Имя - Command2, Caption - О регистрации
Кнопка (CommandButton) : Имя - Command2, Caption - Выход

В результате всего этого у вас должно получится примерно так :


Шаг №3- Программирование в коде

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

Option Explicit - заставляем объявлять все переменные

Dim sn as Long - Объявляем "большую" переменнубю sn - это серийный номер

Dim rc as Long - Объявляем "большую" переменнубю rc - это регистрационный код

Dim result as Long - это "служебная" переменная потом поймете для чего она нам нужна

Dim result2 as Single - это также "служебная" переменная

Dim reg As String - Это регистрация - если зарегистрированно то она равна 1 если нет - то 0

При начале работы программа первым делом должна проверить - зарегистрированна ли она. Пишем в разделе Form_Load( )

If Dir("c: .txt") = "" Then - Проверяем - есть ли файл r.txt на диске С и если нету тогда...

reg = 0 - Придаем регистрации значение - 0 (незарегистрированно)

Open "c: .txt" For Output As #2 -Открываем этот файл для записи

Print #2, reg -Записываем в него переменную reg

Close #2 -Закрываем его

Else -Если на диске С есть файл r.txt

Open "c: .txt" For Input As #2 -Открываем его для вытаскивания из него данных

Input #2, reg -Вытаскиваем из него переменную reg

Close #2 -Закрываем его

If reg = "1" Then -Если зарегистрированно то

prog.Show -Показываем форму prog

frmsn.Hide - Скрываем эту форму

End If - Заканчиваем проверку регистрации

End If - Заканчиваем проверку наличия файла