Как искать во всех каталогах, кроме одного C# - PullRequest
0 голосов
/ 11 апреля 2020

Я сейчас работаю над антивирусом в C#. У меня есть одна маленькая проблема, хотя. Когда он сканирует файлы компьютера, он не может получить доступ к файлам в AppData. Как мне найти все каталоги, кроме одного?

Это то, что я получил до сих пор (не работает):

Directory.GetFiles(path , "*.*", SearchOption.AllDirectories).Where(d => !d.StartsWith("<EXCLUDE_DIR_PATH>")).ToArray();

Я получаю сообщение об ошибке

Доступ к пути 'c: \ Users \ admin \ AppData \ Local \ Application Data' запрещен.

Ответы [ 2 ]

0 голосов
/ 11 апреля 2020

Я проверил ваш код, и он отлично работает. Кажется, это проблема разрешения. Попробуйте запустить приложение с правами администратора. Вот хороший ответ SO для этого

Однако вы столкнетесь с другой проблемой - Directory.GetFiles найдет несуществующие файлы. Еще один SO-ответ на этот вопрос

В ходе моего тестирования я столкнулся с несуществующими папками в каталоге AppData. Вам нужно будет указать программе игнорировать такие каталоги. Вот еще один ответ, с чего можно начать

0 голосов
/ 11 апреля 2020

Исключение отказа в доступе просто означает, что у вас нет доступа к каталогу. Windows имеет несколько из них, и AppData является одним из них. Попробуйте запустить программу от имени администратора. Обратите внимание, что вам нужно

  1. быть Windows пользовательской частью группы администраторов и
  2. ваше приложение должно работать с повышенными правами.

Вы можете достичь 1 и 2, запустив исполняемый файл вашей программы, щелкнув правой кнопкой мыши и выбрав «Запуск от имени администратора» (даже если вы вошли в систему как администратор!)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...