我想获取 MS Windows 中已安装的 Mini-Filter 驱动程序的列表,但我不知道该怎么做。
我的编程语言是 Delphi(我也可以使用 C 或 C++),谁能帮我做这件事?
我想获取 MS Windows 中已安装的 Mini-Filter 驱动程序的列表,但我不知道该怎么做。
我的编程语言是 Delphi(我也可以使用 C 或 C++),谁能帮我做这件事?
以下代码使用注册表枚举项目:
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
。
此条目如下所示:
我们可以在用户空间中使用(例如)以下 API 函数来获取 MS Windows 中已安装的 Mini-Filter 驱动程序的列表:-)。
FilterFindFirst
FilterFindNext
有关更多信息,请参阅此链接: Minifilter User-Mode Application Functions
枚举所有微型过滤器驱动程序的最佳方法是通过命令行fltmc。确保以管理员身份打开 CMD,然后输入“fltmc”。然后,由于您正在寻找一种以编程方式执行此操作的方法,只需使用ShellExecuteEx从您的程序中调用此命令。这在本文中有所体现。这样做的正确方法是:
ShellExecute( NULL, "open",
"cmd.exe",
"fltmc.exe",
NULL,
SW_SHOWNORMAL
);