В Windows 7 есть несколько каталогов, которые имеют имена с древних времен и не могут быть доступны. Я имею в виду такие каталоги, как «C: \ Documents and Settings» и «C: \ Dokumente und Einstellungen», где настоящая папка «C: \ Users». Другой - «C: \ Program» для локализованных систем. Эти каталоги отображаются при итерации всех каталогов с помощью Directory.GetDirectories
, но доступ к ним недоступен. При попытке доступа к ним вызывается UnauthorizedAccessException
. Я мог его поймать, но это вызывает дополнительное время, которое замедляет сканирование. Я бы предпочел не смотреть в эти поддельные каталоги в первую очередь. (Мне интересно, почему они даже там, и могу ли я просто удалить их, но это еще один вопрос.)Охватывать каталоги ссылок на совместимость Windows
Так что же это хороший способ обнаружить такие ловушки, прежде чем попасть в них? Я предполагаю, что это какая-то ссылка, но есть разные типы ссылок (и все, что связано с мужеством NTFS, без мирского пользователя), и все же я не знаю, как это обнаружить из кода.
Я знаю, что мне все еще нужно обрабатывать это исключение, но если я уже заранее знаю, что операция не будет работать, я бы не стал делать это быстро. Сканирование диска уже достаточно медленное.
Мой код не должен запускаться с правами администратора, и он не ожидает найти что-либо полезное в этих связанных каталогах.
Устранение исключения может вызвать дополнительное время, но имеет ли это влияние на время выполнения? Вполне возможно, что код, который вам нужен, чтобы избежать этого, на самом деле стоил бы дороже, чем просто принятие того, что вам придется иметь дело с исключением. – Ceisc
В DACL запрещается перечислять все ACE, которые предотвращают их перечисление. Но они все еще могут быть пройдены, например. 'dir"% SystemDrive% \ Documents and Settings \% USERNAME% "'. – eryksun
Держитесь подальше от любого каталога с атрибутами «Скрытый» и «Система». –