如何以编程方式使用Windows文件资源管理器执行搜索?

我们的网络上有一个文件夹,我们想在其中搜索,包括我们程序中的子文件夹。 我们想要返回一个名称包含“String1”或“String2”或“StringN”的文件列表。 我们希望以编程方式打开资源管理器窗口,并使用本机Windows文件资源管理器查看与搜索结果匹配的所有文件。

这可能吗? 怎么样?

谢谢!

您可以使用.ms-search文件格式表示已保存的搜索。 如果您打开此文件格式,它将启动应用了搜索条件的文件资源管理器。

如果已经应用了搜索打开了文件资源管理器窗口,则可以使用function区上的“保存搜索”按钮进行保存。

由于Windows资源管理器随着操作系统的每个版本而变化…我建议通过.NET进行搜索并在表单上的网格上显示结果。

使用System.IO命名空间。

System.IO.Directory.GetFiles(folderName)将获取文件…

您将需要一个递归函数来首先枚举所有文件,然后递归每个子目录。

下面是一些代码,用于创建已保存的搜索xml文件(file.search-ms),以便按名称搜索指定的路径和搜索字符串:

///  /// Generates the XDocument needed to create a .search-ms file for the path and mask given where mask specifies name parameter. /// search string in Windows is name:~searchmask. Searchmask includes * at beginning and end to find string present anywhere in name /// ///  /// absolute path eg C:\Pictures\ ///  part of search string after name:~ ///  public XDocument GenerateSearchDocName(string searchPath, string searchMask) { // "*[*2602_Australia_Australian Capital Territory_O'Connor*].*" - example searchMask string str = @""; str+=@""; XDocument doc = XDocument.Parse(str); return doc; } 

https://github.com/nvuono/ExplorerQuickSearch上的示例代码仅使用文件扩展名搜索,但显示如何在temp文件夹中创建已保存的搜索并执行它。

更好的解决方案是为搜索生成URL并将其提供给Internet Explorer,从而生成显示搜索结果的Windows /文件资源管理器窗口。 执行此操作的一些代码显示在

从资源管理器搜索框中的术语创建已保存的搜索(.search-ms)