В большинстве случаев правильный ответ заключается в том, что вы не должны.
Ваш алгоритм должен поймать UnauthorizedAccessException, принять, что ему не разрешено перемещаться дальше по этой папке и действовать так, как папка пуста.
Это означает, что иногда вы получите ответ, что каталог, который вы ищете, не существует, когда он технически существует. Ничего страшного. Так оно и должно быть. Если у вас нет разрешения на это, для вас это не существует.
Папки, защищенные правами некоторых других пользователей, являются «частными». Программа, которую выполняет «Джо», не должна смотреть на папки, принадлежащие «Мэри». В этом весь смысл разрешений.
Существует очень мало контролируемых исключений из правила. Как известно, Disk Backup и Антивирусные приложения должны иметь возможность перемещаться по всему диску, независимо от разрешения на доступ к папке. Они делают это, настраивая службу под высокоприоритетной учетной записью (возможно, «SYSTEM», возможно, что-то еще). Вероятно, это будет учетная запись, которая содержит SeBackupPrivilege.
Вы можете сделать это для своей программы, если действительно необходимо отсканировать весь диск, но для большинства сценариев приложений вы действительно не должны. Следует иметь в виду только такое техническое обслуживание, как антивирус или программа резервного копирования.
Это не значит, что это «перебор»; это то, что это «неправильно». Он не играет по правилам.
Возможно, вы захотите включить дополнительную информацию о том, какой язык/рамки программирования вы используете. – Marplesoft
Какая ОС вы используете? –
BTW, устанавливая законный вопрос программирования, подобный этому, как «вики сообщества» - отличный способ убедиться, что многие люди не будут беспокоиться о том, чтобы дать вам ответ. Вы должны быть в настроении «работать бесплатно» :-). Удачи –