我有一个要求,搜索文件在某一地点为指定的内容。这些文件将被搜查,通过一个网上应用程序(其可以不必在同一服务器),应该更新在近实时。

之后的寻找扫描工具/代码,我击中后, 答案表明,你可以编程方式挂钩的建于Windows的搜索功能的窗口。

使用的代码如下(或多或少的答案码有一些小的调整),我已经能够成功地使这项工作在我的机器:

public class WindowsSearchScanner
{
    private const string Query = @"SELECT System.ItemName FROM SystemIndex WHERE scope ='file:{0}' and FREETEXT('{1}')";

    public void DoSearch(string criteria, string path)
    {
        string connectionString = "Provider=Search.CollatorDSO;Extended Properties=\"Application=Windows\"";
        using (OleDbConnection connection = new OleDbConnection(connectionString))
        {
            string query = string.Format(Query, path, criteria);
            OleDbCommand command = new OleDbCommand(query, connection);
            connection.Open();

            List<string> result = new List<string>();

            OleDbDataReader reader = command.ExecuteReader();
            int count = 0;
            while (reader.Read())
            {
                result.Add(reader.GetString(0));
                Console.WriteLine(reader.GetString(0));

                count++;
            }
            Console.WriteLine(count + " Records Found");

            connection.Close();
        }
    }
}

我有几个问题:

  1. 是有一个 更好的 (即更多。Net)的方式访问的窗户搜索,超出使用的字符串查询?
  2. 有没有一种方式进行参数设置的文本?我试图直接加入 OleDbParameters 该命令,但显然CollatorDSO不支持它。显然,我宁愿没有消毒的数据事先样SQL注,它有可能我会错过一些潜在的途径,将引起的问题

    string query = @"SELECT System.ItemName FROM SystemIndex WHERE scope ='file:' + @path and FREETEXT(@text)";
    OleDbCommand command = new OleDbCommand(query, connection);
    
    command.Parameters.Add(new OleDbParameter("path", path));
    command.Parameters.Add(new OleDbParameter("text", criteria));
    
    connection.Open();
    
  3. 这可以访问从远程机器?

  4. 将这项工作,甚至如果服务器没有相关的软件安装--即如果目录中包含一个excel文件,将它的索引,甚至如果服务器没有办公室安装?
有帮助吗?

解决方案

3),4) msdn使用SQL和质量系统的办法来查询的索引 1)你可以尝试增加窗口的功能通过进口不安全。2)看起来奇怪的老式的但我想没有其他选择,对于这种方法

其他提示

你可以去古老的学校,并使用FindStr在一个流程/ProcessStartInfo.

Findstr(a命令行工具)是建立在你的服务器和能够访问的任何位置,这些用户,你是模仿已经访问。

我试过这个了在一个小的单页面执行,我能够读/扫描文件关于我的地方驱动以及国军司令部的路径。

这可能是一个选择。输出的文本。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top