.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;
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.818 из 5
Похожие ответы