1

我想获取 MS Windows 中已安装的 Mini-Filter 驱动程序的列表,但我不知道该怎么做。

我的编程语言是 Delphi(我也可以使用 C 或 C++),谁能帮我做这件事?

4

3 回答 3

3

以下代码使用注册表枚举项目:

implementation

{$R *.dfm}

uses Registry;

procedure TForm17.Button1Click(Sender: TObject);
var
  Reg: TRegistry;
  count: integer;
  i: integer;
  Item: string;
  AllOK: boolean;
begin
  Reg:= TRegistry.Create(KEY_READ);
  try
    Reg.RootKey:= HKEY_LOCAL_MACHINE; //Note must set the base first.
    //Then open rest of the subtree underneigh.
    AllOK:= Reg.OpenKeyReadOnly('SYSTEM\CurrentControlSet\services\FltMgr\Enum');
    if (AllOK) then begin
      count:= Reg.ReadInteger('Count');
      for i:= 0 to count - 1 do begin
        Item:= Reg.ReadString(IntToStr(i));
        Memo1.Lines.Add(Item);
      end; {for}
    end else {not(AllOK)} begin
      Memo1.Lines.Add('SYSTEM\CurrentControlSet\services\FltMgr\Enum does not exist');
      exit;
    end;
  finally
    Reg.Free;
  end;
end;

返回的条目如下所示:是对Root\LEGACY_FLTMGR\0000
Root引用HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root。因此,对于上述条目,您可以从以下位置获取所有信息:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_FLTMGR\0000

此条目如下所示:

在此处输入图像描述

于 2013-10-08T20:57:59.290 回答
1

我们可以在用户空间中使用(例如)以下 API 函数来获取 MS Windows 中已安装的 Mini-Filter 驱动程序的列表:-)。

FilterFindFirst
FilterFindNext

有关更多信息,请参阅此链接: Minifilter User-Mode Application Functions

于 2013-10-16T14:58:49.237 回答
1

枚举所有微型过滤器驱动程序的最佳方法是通过命令行fltmc。确保以管理员身份打开 CMD,然后输入“fltmc”。然后,由于您正在寻找一种以编程方式执行此操作的方法,只需使用ShellExecuteEx从您的程序中调用此命令。这在本文中有所体现。这样做的正确方法是:

ShellExecute( NULL, "open",
    "cmd.exe",
    "fltmc.exe",
    NULL,
    SW_SHOWNORMAL
);

在此处输入图像描述

于 2020-03-07T16:04:05.500 回答