2013-06-02 2 views
2

У меня есть некоторые сетевые компьютеры, установленные на моем ПК. Я вижу их в Проводнике Windows, с буквами дисков и т. Д. Если я пытаюсь читать или писать с помощью C#, я всегда получаю DirectoryNotFoundException. метод, чтобы проверить, если каталог существуетC# - Доступ к подключенному сетевому диску

Directory.Exists(@"N:\test") 

возвращается false (N:\ является смонтированный доля). Если я открою путь в проводнике, путь будет существовать.

Вы можете себе представить, в чем проблема?

Спасибо!

+0

Работы хорошо для меня, просто протестировали его. – jAC

+0

Хорошо, спасибо. Я не знаю, почему это НЕ должно работать ?! Должен быть доступен как локальный диск. – user2445254

+0

Вы уверены, что существует папка 'test'? Можете ли вы перейти к этому пути с помощью проводника файлов? – jAC

ответ

1

Я просто проверял, чтобы увидеть, если это работает, когда я запускаю приложение как администратор, и оно не удалось. Поэтому причина, скорее всего, связана с тем, что пользователь, у которого вы выполняете код, не имеет доступа к этому пути.

Как вы подтвердили, что вы на самом деле запуска приложения с повышенными привилегиями, вы должны следовать указаниям, которые также предложены в этом ответе: https://stackoverflow.com/a/11268410/674700:

(...) открыть административную командную строку - где у вас есть добавленный токен - и создайте соответствующее сопоставление дисков с там (использование сети h: \ server \ share1). Поскольку у стандартного пользователя и администратора есть общее понимание того, что означает «H:» привод , все работает нормально.

+1

Привод просто отображается под пользователем, который отображает диск. Звучит разумно, не так ли? Если вы сопоставляете диск как пользователя и запускаете программу в качестве администратора, администратор не отображает диск. – user1908061

+0

Это правильно. –

0

Ну, я просто попытаюсь предположить, почему вы можете получить это исключение, вот оно;

Прежде всего, метод Directory.Exists() отлично подходит для сетевых накопителей. Может быть еще несколько причин, почему вы получаете DirectoryNotFoundException в своей работе.

От MSDN;

Метод Exists возвращает false, если возникает ошибка при попытке установить , определить, существует ли указанный файл. Это может происходить в ситуациях , которые генерируют исключения, такие как , передающие имя файла с недопустимыми символами или слишком большим количеством символов, сбойным или отсутствующим диском или . У вызывающего абонента нет разрешения на чтение файла.

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

Смежные вопросы