Система.Исключение несанкционированного доступа с правами администратора

#c# #visual-studio-2013 #manifest #execution

#c# #visual-studio-2013 #манифест #выполнение

Вопрос:

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

 <requestedExecutionLevel level="highestAvailable" />
  

и

 <requestedExecutionLevel level="requireAdministrator" uiAccess= "true"/>
  

и

 <requestedExecutionLevel level="requireAdministrator" uiAccess= "false"/>
  

Основной код исключения является:

 List<string> search =
    Directory.GetFiles(@"C:\", "*.exe*", SearchOption.AllDirectories).ToList();
  

Кто-нибудь может мне помочь, пожалуйста? Я буду очень благодарен!

Комментарии:

1. Вероятно, это не ваша проблема, но @"C:\" это C: \ не C:

2. Щелкните правой кнопкой мыши ярлык visual Studio и выберите запуск от имени администратора

3. Спасибо! Я тоже пробовал это, но не сработало, возникает та же ошибка.

Ответ №1:

При попытке сделать это возникает исключение несанкционированного доступа.

То, что вы администратор, не означает, что у вас есть доступ ко всему. Я никогда не использовал это раньше, но в руководстве сказано, что SearchOption.AllDirectories делает это:

Включает текущий каталог и все его подкаталоги в операцию поиска. Этот параметр включает в себя точки повторной проверки, такие как подключенные диски и символические ссылки в поиске.

Итак, это рекурсивный поиск на диске C. Это означает, что он попытается проникнуть в такие вещи, System Volume Information к которым у обычного администратора не будет доступа.

Если не считать самостоятельной настройки (и изменения списков управления доступом в важных системных папках), я не верю, что в Windows есть участник безопасности, который имеет гарантированный доступ ко всему на диске C. Вам следует попробовать выполнить повторный просмотр файлов и папок самостоятельно и игнорировать папки, в которые вы не можете попасть.