Как проверить, отказано ли в доступе к строковому пути? - PullRequest
1 голос
/ 21 марта 2012

Я хочу знать, как я могу проверить, могу ли я получить доступ к пути строки или нет. Вот код, который я использую:

using System;
using System.IO;

namescpace prog1
{
    class Program
    {
        static void Main(string[] args)
        {
            string path = @"C:\Users\Admin";
            DirectoryInfo dir = new DirectoryInfo(path);
            foreach (FileInfo fil in dir.GetFiles())
            {
                //At dir.GetFiles, I get an error  saying
                //access to the string path is denied.

                Console.WriteLine(fil.Name);
            }
            Console.ReadLine();
        }
    }
}

Я хочу проверить, отказано ли в доступе (к строковому пути) Затем выполните GetFiles и все такое.

Я уже нашел это: как можно легко проверить, запрещен ли доступ к файлу в .NET?

Любая помощь?

Ответы [ 2 ]

5 голосов
/ 21 марта 2012

Самый простой (и обычно самый безопасный) вариант - просто сделать то, что вы делаете сейчас, но обернуть код в надлежащую обработку исключений.

Затем вы можете поймать UnauthorizedAccessException изGetFiles (и, возможно, SecurityException из конструктора DirectoryInfo, в зависимости от пути) в явном виде и поместите туда свою логику обработки.

2 голосов
/ 21 марта 2012

Можно сделать что-то вроде этого:

static void Main(string[] args)
{
     string path = @"C:\Users\Admin";
     DirectoryInfo dir = new DirectoryInfo(path); 
     FileInfo[] files = null;
     try {
            files = dir.GetFiles();
     }
     catch (UnauthorizedAccessException ex) {
         // do something and return
         return;
     }

     //else continue
     foreach (FileInfo fil in files )
     {
        //At dir.GetFiles, I get an error  saying
        //access to the string path is denied.

         Console.WriteLine(fil.Name);
      }
      Console.ReadLine();
}
...