Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2012, 10:47   #1
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
Вопрос SecurityException в процессе перебора каталогов

Вот то есть перебираю каталоги вот так:
Код:
DirectoryInfo di = new DirectoryInfo(path);
DirectoryInfo[] dirs = di.GetDirectories("*",SearchOption.AllDirectories);

foreach(var info in dirs)
{
   Console.WriteLine(info.Name);
}
И в некоторых случаях получаю SecurityException. Разумеется, мне этого не надо, но перехват тут не подойдёт, ибо перебор сразу прервётся. Как выполнить перебор тех директорий, к которым мы можем обратиться, т.е. не получая исключений?
_-Re@l-_ вне форума Ответить с цитированием
Старый 12.03.2012, 17:17   #2
Lasur
Форумчанин
 
Аватар для Lasur
 
Регистрация: 13.10.2011
Сообщений: 143
По умолчанию

Exception вылетает при вызове конструктора DirectoryInfo. Так что мешает отлавливать те path, при которых вылазит SecurityException, а для других проводить цикл?
Все имена, фамилии, ники, даты и события упоминаемые в моих постах, являются вымышленными. Все совпадения с реально существующими - случайны.

Последний раз редактировалось Lasur; 12.03.2012 в 17:23.
Lasur вне форума Ответить с цитированием
Старый 27.03.2012, 08:57   #3
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Цитата:
Exception вылетает при вызове конструктора DirectoryInfo.
Неправда, проверено мной. Вызвал тупо конструктор для DirectoryInfo с папкой C:\Windows\System32, и ничего.
Цитата:
Так что мешает отлавливать те path, при которых вылазит SecurityException
Вопрос в том , как это сделать. Тема актуальна.

Последний раз редактировалось _-Re@l-_; 27.03.2012 в 09:01.
_-Re@l-_ вне форума Ответить с цитированием
Старый 27.03.2012, 09:02   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

может так?
Код:
                try
                {
                    DirectoryInfo di = new DirectoryInfo(path);
                    DirectoryInfo[] dirs = di.GetDirectories("*",SearchOption.AllDirectories);

                    foreach(var info in dirs)
                    {
                       Console.WriteLine(info.Name);
                    }
                                    }
                catch (Exception)
                {
                    // ignore
                }
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.03.2012, 09:22   #5
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Дак как бы если если GetDirectories первой найдёт именно папку которая вызовет исключение, поиск будет сразу же прекращен, т.е. мы ничего не найдём. А найти нужно все доступные для простолюдинов файлы и папки.
_-Re@l-_ вне форума Ответить с цитированием
Старый 27.03.2012, 09:58   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ну внесите try в цикл.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.03.2012, 10:06   #7
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

1) Если возможно, дай проге админские права
2) Попробуй сделать через Directory.GetDirectories
ds.Dante вне форума Ответить с цитированием
Старый 27.03.2012, 11:14   #8
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Цитата:
ну внесите try в цикл.
Дак насколько я понимаю исключение возникнет ещё до цикла.
_-Re@l-_ вне форума Ответить с цитированием
Старый 27.03.2012, 22:05   #9
Lasur
Форумчанин
 
Аватар для Lasur
 
Регистрация: 13.10.2011
Сообщений: 143
По умолчанию

Цитата:
Сообщение от _-Re@l-_ Посмотреть сообщение
Неправда, проверено мной. Вызвал тупо конструктор для DirectoryInfo с папкой C:\Windows\System32, и ничего.
Забавно, что в msdn SecurityException может вызвать либо конструктор, либо пустой GetDirectories().
GetDirectories()
GetDirectories(string, SearchOption)
Все имена, фамилии, ники, даты и события упоминаемые в моих постах, являются вымышленными. Все совпадения с реально существующими - случайны.
Lasur вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SecurityException с веб сервисом any_key ASP.NET 1 13.01.2012 09:55
Информация о созданном процессе процессе Deathcore Помощь студентам 1 05.04.2011 19:54
Шифрование каталогов buenosaire Помощь студентам 2 09.05.2010 12:19
[C++] дерево каталогов Akord Помощь студентам 0 17.12.2009 17:07
древо каталогов Dunpeal Компоненты Delphi 6 21.11.2006 06:22