• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

C# UnauthorisedAccessException. HELP!

micerec

Green Team
29.11.2019
38
1
BIT
0
Здравствуйте! Мне надо написать программу, которая идет по каталогам/подкаталогам и ищет файлы по шаблону, например, .dll. Когда я запускаю код, мне пишут, что UnauthorisedAccessException. как с этим бороться? catch (UnauthorisedAccessException) {} не работает. Вот Код:
C#:
using System;
using System.IO;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string catalog = "C:\\";
            string fileName = "*.dll";
            foreach (string findedFile in Directory.EnumerateFiles(catalog, fileName, SearchOption.AllDirectories))
            {
                FileInfo FI;
                    try
                    {
                        //по полному пути к файлу создаём объект класса FileInfo
                        FI = new FileInfo(findedFile);
                        //найденный результат выводим в консоль (имя, путь, размер, дата создания файла)
                        Console.WriteLine(FI.Name + " " + FI.FullName + " " + FI.Length + "_байт" + " Создан: " + FI.CreationTime);
                    }
                    catch (UnauthorizedAccessException) //слишком длинное имя файла
                    {
                    Console.WriteLine("Access denied!");
                        continue;
                    }
                }
            }
        }
    }

P.s.: решение вроде "на корневой каталог прав нет" не принимается. Нужно чтобы при возникновении этой ошибки файл пропускался и программа шла дальше.
 

Balabol

Well-known member
24.06.2020
92
0
BIT
0
Здравствуйте! Мне надо написать программу, которая идет по каталогам/подкаталогам и ищет файлы по шаблону, например, .dll. Когда я запускаю код, мне пишут, что UnauthorisedAccessException. как с этим бороться? catch (UnauthorisedAccessException) {} не работает. Вот Код:
C#:
using System;
using System.IO;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string catalog = "C:\\";
            string fileName = "*.dll";
            foreach (string findedFile in Directory.EnumerateFiles(catalog, fileName, SearchOption.AllDirectories))
            {
                FileInfo FI;
                    try
                    {
                        //по полному пути к файлу создаём объект класса FileInfo
                        FI = new FileInfo(findedFile);
                        //найденный результат выводим в консоль (имя, путь, размер, дата создания файла)
                        Console.WriteLine(FI.Name + " " + FI.FullName + " " + FI.Length + "_байт" + " Создан: " + FI.CreationTime);
                    }
                    catch (UnauthorizedAccessException) //слишком длинное имя файла
                    {
                    Console.WriteLine("Access denied!");
                        continue;
                    }
                }
            }
        }
    }

P.s.: решение вроде "на корневой каталог прав нет" не принимается. Нужно чтобы при возникновении этой ошибки файл пропускался и программа шла дальше.
может сам
C#:
FI = new FileInfo(findedFile);
обернуть в try?
 

Balabol

Well-known member
24.06.2020
92
0
BIT
0
может там есть такие директории, которые даже из под админки не позволяют читать директорию и файлы и их как-то надо исключить?
 

micerec

Green Team
29.11.2019
38
1
BIT
0
Да, от админа там тоже не пробиться. Например C:\Documents and бла бла бла

Но и %userprofile%\AppData\Local\Application Data\ тоже недоступен, так что вручную не получится
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!