Добрый день. Это нулевая запись из трех, а может и больше, про автоматическую смену ключей для антивируса Nod32. С чего все началось? Мои родители — индивидуальные предприниматели, у них есть есть магазин, недавно там была проведена полная автоматизация — поставлен компьютер со специальным программным обеспечением и оборудованием (считыватель штрих-кода, кассовый аппарат), плюс есть офис. Понятное дело, как самый знаток в семье, я заведую всеми компьютерными делами. То есть, несколько компьютеров дома, объединенных в сеть с помощью маршрутизатора ASUS RT-N10, офисный и магазинный компьютеры — все на мне. Ясное дело, на них нужны антивирусы. Для этого дела покупается 2 выпуска журнала ComputerBild в месяц — и ключи распределяются, благодаря чему получается неплохая экономия. Так вот, раньше-то я бегал и устанавливал эти ключи в пределах одной квартиры, а теперь мне нужно ездить каждый месяц в торговый центр и офис просто чтобы обновить ключ… Не удивительно что я решил не тратить на это 2 часа, а написать программу, которая бы сама забирала ключ с моего сервера и устанавливала на компьютер, на котором она запущена. Сделал снимок реестра с помощью RegShot, установил другой ключ, сделал второй снимок — и обнаружил, что настройки у антивируса Nod32 хранятся тут:
HKEY_LOCAL_MACHINE\SOFTWARE\ESET\ESET Security\CurrentVersion\Plugins\01000400\Profiles\@My profile
Соответственно, имя пользователя хранится в параметре стокового типа Username, а пароль — бинарного типа Password. «Ага» — подумал я, и решил, что на сервере будет храниться имя пользователя и пароль именно в таком бинарном виде, чтобы было проще записывать на конечном компьютере.
В этой записи я рассказываю о программе, которая позволяет считать и скопировать в буфер пароль (так сказать, начинаю с самого простого, хотя ее я написал уже после основной — клиентской). Итак, начнем.
В разделе uses подключаем модули TRegistry (для работы с реестром) и ClipBrd (для работы с буфером обмена). На форму кидаем 2 кнопки TButton и поле ввода TMemo. На кнопках пишем «Найти» и «В буфер». в Memo1 в параметре Lines пишем «Здесь будет отображен результат работы» вместо «Memo_num» и устанавливаем атрибут ReadOnly в True чтобы нельзя было случайно удалить данные. Должно получиться что-то вроде этого:
Создадим событие для первой кнопки. Сделаем по ней двойной клик, объявим переменные и введем код, в результате чего получится примерно следующее:
procedure TForm1.Button1Click(Sender: TObject);
var
Reg: TRegistry;
Buf: array[0..20] of Byte;
c,i: integer;
begin
FillChar(Buf, SizeOf(Buf), 0);
Reg := TRegistry.Create;
Reg.RootKey := HKEY_LOCAL_MACHINE;
try
Reg.OpenKey('SOFTWARE\ESET\ESET Security\CurrentVersion\Plugins\01000400\Profiles\@My profile', True);
c := (Reg.ReadBinaryData('Password', Buf, SizeOf(Buf)));
Memo1.Lines.Strings[0]:=InttoStr(c)+' байт считано: ';
for i := 0 to c - 1 do
Memo1.Text:=Memo1.Text+InttoStr(Buf[i])+' ';
Reg.CloseKey;
finally
Reg.Free;
end;
end;
Это означает, что сначала мы инициализируем переменную, затем переходим в раздел «HKEY_LOCAL_MACHINE» и идем туда, куда нам нужно, считываем оттуда переменную и выводим ее в поле.
Для кнопки «В буфер» пишем всего одну строку:
Clipboard.SetTextBuf(PChar(Memo1.Lines.Strings[1]));
Вот и все, теперь наш пароль будет копироваться в буфер и его будет легко вставить и использовать в БД:
Скачать мой вариант программы с исходниками можно по этой ссылке.