Использование DirectoryInfo с путем UNC

Я пытаюсь с помощью DirectoryInfo проверить, существует ли путь UNC, однако непротиворечивость DirectoryInfo дает сбой и говорит, что папка не существует, когда я могу подтвердить это в проводнике Windows.

Пример

var storagepath = new DirectoryInfo(@"\\123.123.123.123\c$\testfolder\test1\");

if (storagepath.Exists)
{ }

Есть ли способ обойти это?


person wonea    schedule 18.04.2011    source источник


Ответы (1)


Есть несколько вопросов, на которые необходимо ответить в отношении вашей программы.

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

Одной из причин того, что Exists является ложным, является отсутствие разрешения на доступ к ресурсу.

Вы можете попробовать другой метод, например EnumerateDirectories, и посмотреть, каков результат. Исключения и результаты EnumerateDirectories немного более наглядны, чем Exists.

person tamarintech    schedule 18.04.2011
comment
Аутентификация пути с помощью удостоверения пользователя решает эту проблему, спасибо! - person wonea; 31.05.2011
comment
Привет @wonea, не могли бы вы поделиться, как это решить, пожалуйста? У меня та же проблема, мне нужно сначала аутентифицировать пользователя, но я не знаю, как... - person Joaquin Alberto; 23.07.2012
comment
Я нашел эту простую библиотеку примеров олицетворения Windows, которая решила мою проблему. Просто вызовите эту библиотеку и поместите команды, которые должны выполняться аутентифицированным пользователем, в инкапсуляцию using. codeproject.com/Articles/10090/ - person wonea; 24.07.2012