Если вы хотите получить список установленных Mini-Filter драйверов в MS Windows, вы можете сделать это с помощью Delphi, используя API-интерфейсы Windows. В этом руководстве мы рассмотрим два подхода: использование реестра и использование API-интерфейсов Minifilter.
Подход 1: Использование реестра
Один из способов получить список установленных Mini-Filter драйверов - использовать реестр Windows.Mini-Filter драйверы регистрируются в разделе реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\FltMgr\Enum. Вы можете использовать компонент TRegistry в Delphi для доступа к этому разделу реестра и чтения списка драйверов.
Вот пример кода на Object Pascal, который читает список Mini-Filter драйверов из реестра и отображает его в Memo-контроле:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Registry;
type
TForm1 = class(TForm)
btnGetDrivers: TButton;
memoDrivers: TMemo;
procedure btnGetDriversClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btnGetDriversClick(Sender: TObject);
var
Reg: TRegistry;
i: Integer;
DriverName: string;
begin
Reg := TRegistry.Create(KEY_READ);
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.OpenKey('\SYSTEM\CurrentControlSet\services\FltMgr\Enum', False) then
begin
for i := 0 to Reg.KeyCount - 1 do
begin
DriverName := Reg.ReadString(i);
memoDrivers.Lines.Add(DriverName);
end;
Reg.CloseKey;
end;
finally
Reg.Free;
end;
end;
end.
Этот код создает экземпляр TRegistry и открывает раздел реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\FltMgr\Enum. Затем он перебирает все ключи в этом разделе и добавляет их имена в Memo-контрол.
Подход 2: Использование API-интерфейсов Minifilter
Другой способ получить список установленных Mini-Filter драйверов - использовать API-интерфейсы Minifilter. Windows предоставляетAPI-интерфейсы FilterFindFirst и FilterFindNext, которые можно использовать для перечисления всех Mini-Filter драйверов в системе.
Вот пример кода на Object Pascal, который использует эти API-интерфейсы для получения списка Mini-Filter драйверов и отображения его в Memo-контроле:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm1 = class(TForm)
btnGetDrivers: TButton;
memoDrivers: TMemo;
procedure btnGetDriversClick(Sender: TObject);
private
{ Private declarations }
function GetMiniFilterDrivers: TStringList;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function TForm1.GetMiniFilterDrivers: TStringList;
var
hFind: HANDLE;
FltmcFilterInfo: TFltmcFilterInfo;
begin
Result := TStringList.Create;
hFind := FilterFindFirst(nil, FltmcFilterInfo(SizeOf(FltmcFilterInfo)), PFLTMC_FILTER_INFO(hFind), PFLTMC_FILTER_INFO(FltmcFilterInfo));
while (hFind <> INVALID_HANDLE_VALUE) do
begin
Result.Add(FltmcFilterInfo.Name);
hFind := FilterFindNext(hFind, FltmcFilterInfo(SizeOf(FltmcFilterInfo)), PFLTMC_FILTER_INFO(hFind), PFLTMC_FILTER_INFO(FltmcFilterInfo));
end;
FilterFindClose(hFind);
end;
procedure TForm1.btnGetDriversClick(Sender: TObject);
begin
memoDrivers.Lines.Assign(GetMiniFilterDrivers);
GetMiniFilterDrivers.Free;
end;
end.
Этот код определяет функцию GetMiniFilterDrivers, которая использует FilterFindFirst и FilterFindNext для перечисления всех Mini-Filter драйверов в системе и возвращает их имена в виде TStringList. В обработчике нажатия кнопки btnGetDrivers
Инструкция объясняет, как получить список установленных Mini-Filter драйверов в MS Windows с помощью Delphi.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.