获取Windows中安装的Mini Filter驱动程序列表

时间:2013-10-08 11:05:52

标签: c++ delphi driver minifilter

我想在MS Windows中获取已安装的Mini-Filter驱动程序列表,但我不知道如何操作。

我的编程语言是Delphi(我也可以使用C或C ++)任何人都可以帮我做这个吗?

3 个答案:

答案 0 :(得分: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获取所有信息。

此条目如下所示:

enter image description here

答案 1 :(得分:1)

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

FilterFindFirst
FilterFindNext

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

答案 2 :(得分:1)

枚举所有小型过滤器驱动程序的最佳方法是通过命令行fltmc。 确保以管理员身份打开CMD,然后键入“ fltmc”。 然后,由于您正在寻找以编程方式执行此操作的方法,因此只需使用ShellExecuteEx从程序中调用此命令即可。这在this article中显示。 这样做的正确方法是:

The intersection of the 2 arrays is: 1 9 12

enter image description here