C# - доступ к подключенному сетевому приводу
У меня есть некоторые сетевые ресурсы, подключенные к моему ПК. Я вижу их в проводнике Windows, с буквами дисков и т. Д. Если я пытаюсь читать или писать с помощью C#, я всегда получаю DirectoryNotFoundException
, Метод проверки, существует ли каталог
Directory.Exists(@"N:\test")
возвращается false
(N:\
это установленная доля). Если я открываю путь в Проводнике, путь существует.
Представляете, в чем может быть проблема?
Спасибо!
2 ответа
Я только что проверил, работает ли это, когда я запускаю приложение от имени администратора, и оно не удалось. Так что причина, скорее всего, в том, что пользователь, под которым вы выполняете код, не имеет доступа к пути.
Подтвердив, что вы действительно запускаете приложение с повышенными привилегиями, вы должны следовать указаниям, которые также предлагаются в этом ответе: /questions/36550820/driveinfogetdrives-ne-vozvraschaet-podklyuchennyie-diski-pri-zapuske-ot-imeni-administratora/36550841#36550841:
(...) откройте административную командную строку - где у вас все время есть маркер с повышенными правами - и создайте соответствующее сопоставление дисков оттуда (net use h: \server\share1). Поскольку обычный пользователь и администратор с повышенными правами имеют общее представление о том, что означает диск "H:", все работает нормально.
Ну, я просто пытаюсь предположить, почему вы можете получить это исключение, вот оно;
Прежде всего, Directory.Exists()
Метод отлично работает для сетевых дисков. Там может быть еще несколько причин, почему вы получаете DirectoryNotFoundException
в твоей работе.
Из MSDN;
Метод Exists возвращает false, если возникает какая-либо ошибка при попытке определить, существует ли указанный файл. Это может произойти в ситуациях, когда возникают исключения, такие как передача имени файла с недопустимыми символами или слишком большим количеством символов, сбойный или отсутствующий диск или если вызывающая сторона не имеет разрешения на чтение файла.
Я верю, что у вас есть одно из этого, но так как мы не можем получить доступ к вашему компьютеру, мы не можем знать настоящую причину:)