Windows 검색 - 더 나은 방법이 있습니까?
-
20-12-2019 - |
문제
지정된 콘텐츠에 대해 주어진 위치에서 파일을 검색 할 필요가 있습니다. 이러한 파일은 웹 응용 프로그램을 통해 검색됩니다 (반드시 동일한 서버에있을 필요가 없음).
근처에서 업데이트해야합니다.스캔 도구 / 코드를 찾아 본 후, 나는 이 답변을 기록합니다. 프로그래밍 방식으로 프로그래밍 방식으로 Windows의 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();
}
}
}
.
해결책
for 3), 4) SQL 및 AQS를 사용하는 MSDN 쿼리에 대한 접근 방식 1) 가져 오기 안전하지 않음을 통해 Windows 기능을 추가 할 수 있습니다. 2) 늙은 구식이지만 나는이 접근법에 대한 다른 옵션이 없다고 생각합니다
다른 팁
Old-School을 가서 ProcessSt / ProcessStartInfo에서 FindStr을 사용할 수 있습니다.
findstr (명령 줄 도구)는 서버에 내장되어 있으며 사용자가 가장하는 사용자가 액세스 할 수있는 위치에 액세스 할 수 있습니다.
나는 작은 단일 페이지 구현에서 이것을 시도했으며, 로컬 드라이브에서 UNC 경로에서 파일을 읽거나 스캔 할 수있었습니다.
이 옵션이 될 수 있습니다.출력은 텍스트입니다.
제휴하지 않습니다 StackOverflow