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, если возникает какая-либо ошибка при попытке определить, существует ли указанный файл. Это может произойти в ситуациях, когда возникают исключения, такие как передача имени файла с недопустимыми символами или слишком большим количеством символов, сбойный или отсутствующий диск или если вызывающая сторона не имеет разрешения на чтение файла.

Я верю, что у вас есть одно из этого, но так как мы не можем получить доступ к вашему компьютеру, мы не можем знать настоящую причину:)

Другие вопросы по тегам