Защита программы паролем

Защита программы паролем

Как видно из примера, программист может поместить любой код до обращения к методу application.run. В частности, он может показать диалоговое окно с запросом пароля и блокировать вызов application.run, если введенный пользователем пароль неверен. В следующем примере (листинг 4 — password.dpr) в проекте используются две формы: стандартная форма inputquery и главная форма mainform. Форма inputquery создается при обращении к одноименной функции, определенной в модуле dialogs. Она представляет собой небольшое диалоговое окно с однострочным редактором tedit и двумя кнопками — ОК и cancel. В окне пользователь должен ввести пароль (delphi) и нажать enter.

Листинг 4

Code
  program password;      uses   forms,   dialogs, // В этом модуле определена функция inputquery   unit1 in 'unit1.pas' {mainform};      {$r *.res}   var   passwrd: string;   begin   // Запрашиваем пароль:   if inputquery('Окно ввода пароля','Введите пароль:',passwrd) then   // Проверяем его:   if passwrd = 'delphi' then   begin // Все в порядке, пароль верен   application.createform(tmainform, mainform);   application.run;   end else   showmessage('Пароль не верен!');   end.   
Пробные версии программ Вышеописанным способом можно создавать пробные версии программ, которые будут функционировать только до определенной даты или до исчерпания заданного количества запусков. В листинге 5 представлен файл проекта (trial.dpr), в котором пробная версия программы может запускаться не более 5 раз. Для запоминания номера очередного прогона используется системный реестр. Листинг 5
Code
  program trial;      uses   forms,   unit1 in 'unit1.pas' {form1},   registry, dialogs; // Для tregistry и showmessage      {$r *.res}   var   reg: tregistry;   n: integer;   begin   reg := tregistry.create;   with reg do   begin   openkey('software', true);   openkey('trialprog', true);   if valueexists('maxrun') then // Первый запуск?   begin // - Нет   n := readinteger('maxrun')-1;   if n>=0 then   writeinteger('maxrun', n)   end else begin // -Да, первый запуск   n := 5;   writeinteger('maxrun', n)   end;   free   end;   if n>0 then   begin   application.createform(tform1, form1);   application.run;   end else   showmessage('Исчерпано максимальное количество запусков'+   ' пробной версии программы')   end.
Здесь следует дать небольшой комментарий. Модуль registry декларирует класс tregistry, который представляет программисту доступ к системному реестру windows. С помощью двух обращений к функции tregistry.openkey создается и/или открывается ключ hkey_current_usersoftwaretrialprog системного реестра. Функция tregistry.valueexists возвращает true, если этот ключ содержит параметр с именем maxrun и для него определено значение. При первом запуске приложения это не так, поэтому процедурой writeinteger создается параметр и для него указывается начальное значение 5 (максимальное количество прогонов программы). При каждом следующем запуске этот параметр уменьшается на 1 и в момент, когда он становится равен 0, приложение блокирует создание и отображение главного окна.
Категория: Уроки по Delphi | Добавил: Dogvill (27.06.2012)
Просмотров: 547 | Теги: зашита программ от взлома, защита программ, delphi | Рейтинг: 5.0/1
Всего комментариев: 0
Имя *:
Email:
Код *: