Frage

Ich habe eine Anforderung, Datei in einem bestimmten Ort für angegebene Inhalte zu suchen. Diese Dateien werden über eine Webanwendung durchsucht (was möglicherweise nicht unbedingt auf demselben Server ist) und sollte in der Nähe von Echtzeit aktualisieren.

Nachdem ich mich für das Scannen von Tools / Code umgesehen hatte, bin ich auf diese Antwort, die darauf hinweist, dass Sie programmgesteu programmatisch in die In Windows-Suchfunktion von Windows eingebaut.

Verwenden des Codes unten (mehr oder weniger der Antwortcode mit einigen kleineren Tweaks), konnte ich diese Arbeit erfolgreich auf meinem Computer machen:

generasacodicetagpre.

Ich habe mehrere Abfragen dazu:

    .
  1. Gibt es eine bessere (d. H. More .NET), um auf die Windows-Suche zuzugreifen, über die Verwendung von String-Abfragen,
  2. Gibt es eine Möglichkeit, den Text zu parametrieren? Ich habe es gerade versucht, den Befehl generakodicetagcode hinzuzufügen, aber anscheinend unterstützt es den Collatordso nicht. Natürlich würde ich es vorziehen, die Daten vorher nicht erdanken zu müssen - wie SQL-Injektion, es ist wahrscheinlich, dass ich eine potenzielle Avenue vermissen werde, die Probleme verursachen wird

    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();
            }
        }
    }
    
  3. kann dies von einer entfernten maschine aufgerufen werden?

  4. wird diese Arbeiten auch dann funktionieren, wenn der Server nicht die relevante Software installiert hat - d. H. Wenn das Verzeichnis eine Excel-Datei enthält, wird der IT-Index auch wenn der Server kein Büro installiert hat?
War es hilfreich?

Lösung

für 3), 4) MSDN mit SQL und AQS-Ansätze, um den Index abzufragen Für 1) können Sie versuchen, Windows-Funktion per Import unsicher hinzuzufügen. für 2) sieht seltsam alt aus, aber ich nehme an, es gibt keine andere Option für diesen Ansatz

Andere Tipps

Sie können die Old-Schule gehen und in einem Prozess / ProzessTartInfo finden.

findstr (ein Befehlszeilenwerkzeug) ist an Ihrem Server eingebaut und kann auf einen beliebigen Ort zugreifen, auf den der Benutzer, an dem der Benutzer, auf den Identificating, auf den Zugriff auf ist.

Ich habe das in einer kleinen einseitigen Implementierung ausprobiert, und ich konnte Dateien auf meinem lokalen Laufwerk sowie auf vollen Pfaden lesen / scannen.

Dies könnte eine Option für Sie sein.Der Ausgang ist Text.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top