.NET 4.x Глобальный поиск файла - C#
Формулировка задачи:
Всем доброго времени суток. Столкнулся с проблемой поиска файлов на компьютере при помощи
System.IO.DirectoryInfo.GetFiles()
; При попытке осуществить поиск вываливается ошибка:Отказано в доступе по пути "C:\Documents and Settings"
и это с учетом того что я обладаю правами админа, и доступ к этой папке у меня свободный.Мой код:
using System;
using System.IO;
namespace testApp
{
internal class Program
{
private static void Main(string[] args)
{
string[] localDrivers = Directory.GetLogicalDrives();
foreach (string drive in localDrivers)
{
DirectoryInfo dirInfo = new DirectoryInfo(drive);
FileInfo[] result = dirInfo.GetFiles("CSService.log", SearchOption.AllDirectories);
foreach (var file in result)
Console.WriteLine("найден" + file.FullName);
}
Console.WriteLine("Готово");
Console.ReadKey();
}
}
}Решение задачи: «.NET 4.x Глобальный поиск файла»
textual
Листинг программы
private static IEnumerable<string> SafeEnumerateFiles(string path, string searchPattern, SearchOption searchOption)
{
Stack<string> dirs = new Stack<string>();
dirs.Push(path);
while (dirs.Count > 0)
{
string currentDirPath = dirs.Pop();
if (searchOption == SearchOption.AllDirectories)
{
try
{
string[] subDirs = Directory.GetDirectories(currentDirPath);
foreach (string subDirPath in subDirs)
{
dirs.Push(subDirPath);
}
}
catch (UnauthorizedAccessException)
{
continue;
}
catch (DirectoryNotFoundException)
{
continue;
}
}
string[] files = null;
try
{
files = Directory.GetFiles(currentDirPath, searchPattern);
}
catch (UnauthorizedAccessException)
{
continue;
}
catch (DirectoryNotFoundException)
{
continue;
}
foreach (string filePath in files)
{
yield return filePath;
}
}
}