• Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Delphi Авторизация с использованием съемного носителя

Lomanu4

Команда форума
Администратор
Регистрация
1 Мар 2015
Сообщения
1,467
Баллы
155
В наше время широко распространено использование ключей безопасности в качестве входа в систему или программу. Наиболее известными программным продуктом является Education – программа для хранения данных об учебном заведении. Для ее использования необходима специальная пластиковая карта, на которой хранятся данные о директоре и зашифрованный ключ. Используя данную карту и зная пароль, можно авторизоваться в программе и приступить к работе с ней.

Для реализации подобной функции в Delphi в качестве ключа будет использоваться серийный номер переносного носителя (к примеру флешки).
Алгоритм программы
1. В программу заранее вписывается серийный номер съемного носителя, который будет, служит в качестве ключа авторизации;


2. Отслеживается подключение нового устройства к компьютеру, если это съемный носитель то имя тома добавляется в список;
3. Если подключено несколько флешек, то из списка необходимо выбрать ту флешку, которая будет использована в качестве ключа авторизации.
Как определить серийный номер съемного устройства и узнать тип устройства можно в статье

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.


В качестве примера реализовано программа, которая позволяет вводить текст, если вставлена флешка имеющая определенный серийный номер.
C++:
procedure ScanRemovableDrive();
var
  i:Integer;
  FlashDriveList : TStringList; // объект, который будет хранить имена томов съемный носителей
  stText:String;
  begin
  Form1.cbb1.Clear;             //очистка объекта ComboBox
  FlashDriveList := TStringList.Create;     //Создание пустого списка
  FlashDriveList := issetRemovableDrive();  //получение списка съемных носителей issetRemovableDrive – см. «Определение серийного номера съемного носителя»

if FlashDriveList.Count > 0 then            //если список не пустой
begin
           for i:=0 to FlashDriveList.Count-1 do    //выводим название томов в объект ComboBox
            begin
             Form1.cbb1.Items.Add(FlashDriveList.Strings[i]);
            end;

            Form1.cbb1.ItemIndex:=0;    //переключаемся на первый элемент объекта ComboBox

{получаем серийный номер выбранного из ComboBox устройства и сравниваем его с константой
  snRemovableDrive, в которой автоматически задан серийный номер флешки для авторизации в программе.
  Если данные номера совпадают, то разрешается ввод текста в поле memo, а иначе нет.}

if snRemovableDrive=GetHardDiskSerial(Form1.cbb1.Text[1]) then Form1.mmo1.ReadOnly:=FALSE
     else Form1.mmo1.ReadOnly:=TRUE;

   Form1.lbl2.Caption:=GetHardDiskSerial(Form1.cbb1.Text[1]); //вывод серийного номера флешки
   Form1.stat1.Panels[0].Text:='Флешка подключена';       //вывод статуса подключения флешки
end
else
begin
  Form1.stat1.Panels[0].Text:='Флешка не подключена';   //вывод статуса подключения
  Form1.lbl2.Caption:='none';
end;
FlashDriveList.Free;                   //освобождаем память FlashDriveList
end;
Для слежения подключения съемного носителя используется процедура WMDeviceChange (var Msg: TMessage);
Код:
uses
  … rxStrUtils;

const
   snRemovableDrive='525D533C';  //с/н флешки при котором разрешается доступ к программе

type
…
  private
    procedure WMDeviceChange(var Msg: TMessage); message WM_DEVICECHANGE;
…
procedure TForm1.WMDeviceChange(var Msg: TMessage);
begin
      ScanRemovableDrive()
end;
 
Вверх Снизу