2011-12-16 2 views
0

Я хочу искать на жестком диске папки с «StudentPortalNightly» в них , но когда я получаю вместо этого, это исключение, потому что я не имеют доступ ко всем папкам ..Поиск всех папок в C#, без вымирания на одном У меня тоже нет доступа

List<string> dirs = Directory.GetDirectories(@"C:\" , "StudentPortalNightly", SearchOption.AllDirectories).ToList(); 

Есть ли способ поиска только в папках, к которым у меня есть законный доступ?

Благодаря

Eric-

+2

См. Ответ на мой вопрос по этому вопросу, ответ сработал отлично - http://stackoverflow.com/questions/7756626/enumerating-files-throwing-exception –

+0

Почему бы вам не сделать просто поймать исключение? –

+0

@ Ramhound, по-видимому, потому, что это не решит проблему. Ему нужны все папки, к которым у него есть доступ, а не все папки до того, что у него нет, и ничего после него. –

ответ

0

Screenshot from your code example

List<string> dirs = new List<string>(Directory.GetFiles(@"C:\").ToList()); 
+1

Я сомневаюсь, что это сработает, как описано выше. Перечисления в файлах будут по-прежнему выдавать исключение. –

+0

работает, я только что протестировал его, и он добавит список всех файлов в список с полным путем и именем файла .. если только он не хочет имен, то ему придется отключить путь. – MethodMan

+2

Возможно, у вас разные разрешения но я просто попробовал это и получил доступ к пути 'C: \ $ Recycle.Bin \ S-1-5-21-3836598418-2506196355-976077039-1000 \' отрицается. В любом случае, давайте просто посмотрим, решает ли он OP. –

0

Try-улов будет работать так долго, как вы поймать правильное исключение. В этом случае вам нужно поймать System.UnauthorizedAccessException

+1

См. Комментарии в исходном вопросе, это не будет работать в случае прекращения выполнения, и я не могу возобновить работу в следующей папке. –