我想在MS Windows中获取已安装的Mini-Filter驱动程序列表,但我不知道如何操作。
我的编程语言是Delphi(我也可以使用C或C ++)任何人都可以帮我做这个吗?
答案 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
获取所有信息。
此条目如下所示:
答案 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