如何在C#中使用Windows搜索服务

用户名

我正在开发一个应用程序,用户可以在本地计算机或网络上搜索文件或文件夹。我正在使用DirectoryInfo.GetDirecotories()

  1. 但是我也想添加Windows 7用于搜索的功能,我相信它使用索引。我还在msdn上看到了Windows Searching Service,但是我不确定哪种方法最好:查询索引目录或使用搜索服务。有什么建议么?
  2. 我想知道是否有人可以在C#中给我一个小的例子来搜索索引目录。

提前致谢!

博基贝格

请参见以下示例:

static void Main(string[] args)
{
    var connection = new OleDbConnection(@"Provider=Search.CollatorDSO;Extended Properties=""Application=Windows""");

    // File name search (case insensitive), also searches sub directories
    var query1 = @"SELECT System.ItemName FROM SystemIndex " +
                @"WHERE scope ='file:C:/' AND System.ItemName LIKE '%Test%'";

    // File name search (case insensitive), does not search sub directories
    var query2 = @"SELECT System.ItemName FROM SystemIndex " +
                @"WHERE directory = 'file:C:/' AND System.ItemName LIKE '%Test%' ";

    // Folder name search (case insensitive)
    var query3 = @"SELECT System.ItemName FROM SystemIndex " +
                @"WHERE scope = 'file:C:/' AND System.ItemType = 'Directory' AND System.Itemname LIKE '%Test%' ";

    // Folder name search (case insensitive), does not search sub directories
    var query4 = @"SELECT System.ItemName FROM SystemIndex " +
                @"WHERE directory = 'file:C:/' AND System.ItemType = 'Directory' AND System.Itemname LIKE '%Test%' ";           

    connection.Open();

    var command = new OleDbCommand(query4, connection);

    using (var r = command.ExecuteReader())
    {
        while (r.Read())
        {
            Console.WriteLine(r[0]);
        }
    }

    connection.Close();

    Console.ReadKey();
}

它使用OLE DB api连接到索引器服务,并使用类似SQL的语法System在其SystemIndex表中搜索对象您有4个示例查询,它们执行不同的操作。所有示例查询都将在c:\文件夹中搜索Test名称中包含的项目

您可以在本地或其他计算机上搜索文件,文件夹邮件以及可能的其他介质(取决于OS)。根据我的研究,不支持网络驱动器,因为它们无法建立索引,但是您可以连接到其他计算机(假定在后台使用RPC),这意味着您必须使用其他api(例如System)提供网络凭据。净)。

请注意,要使这一切正常进行,您的索引必须在目标计算机上完全可用(默认情况下为)。api与您在“索引选项”中指定的内容相对应。这是有问题的屏幕:

索引选项

System可以在以下位置找到对象的属性的完整列表属性系统参考该对象包含URL,路径,名称,日期等。

可以在这里找到使用不同谓词(例如scopedirectory)的更有趣的示例Windows Vista搜索语法还有一个粗略的MSDN文档:SCOPE和DIRECTORY谓词

我建议您查阅文档,因为您可以使用此api很多事情。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Windows 10 C#通用应用程序中使用C ++类?

如何在C#中使用Rest Web服务

如何在Windows Universal App中使用双工wcf服务

如何在C#中使用SQLInstallDriverEx?

如何在Windows中使用Python子进程进行搜索

如何在Windows中使用Python子进程进行搜索

如何在C#中使用文本框搜索ListView的项目

如何在C中使用bsearch在结构内搜索数组

我如何在Blazor @inject ClassName classObject中使用/注入“普通” c#类中的服务

如何在C#中使用Contains和Linq方法在字符串中搜索数字?

如何在C#中使用ThreadPool?

如何在Windows应用程序中使用WPF和C#上传文件

如何在C#中使用复杂类型的REST服务?

如何重新启动Windows Server 2003 PC在Windows服务中使用C#?

如何在C#中使用CompositeTransform?

如何在C#中使用此xml Web服务?

如何在C#中使用属性

如何在C#中使用Restfull Web服务发送数据

如何在C#程序中使用标准Windows定义

如何在C#中使用跨平台定位服务

如何在Windows Store App中使用SearchBox搜索内容?

如何在c#中使用aws sdk检索aws-ec2 Windows实例密码

如何在C#中使用LINQ to Twitter v.4进行Twitter搜索

如何在C#中使用ScriptEngine

如何在C#中使用OnSessionChange检测Windows登录事件

如何在c#中使用库

如何在 Windows C# 中使用 SuperWebSocket 部署 wss

如何在 C# 中使用 .NET API 获取 Azure 服务总线的队列大小

如何在 C# 中使用 Switch