Запуск Visual Studio в качестве администратора не отображает подключенные сетевые диски

У меня проблема с тем, как работает File.Exists() (не работает): когда я его использую, он утверждает, что файл не существует (из Immediate Window):

filePath
"P:\\poolman\\LY21\\2015\\LY21_2015-03-25_03.xml"
File.Exists(filePath)
false

Но если я копирую/вставляю путь к URL-адресу окна проводника (удаляя escaping \) , он открывает файл.

Итак, File.Exists() утверждает, что существующего файла не существует, что меня беспокоит.

Это не о длине пути (это 43), а FileInfo не лучший вариант, как предлагается .

Здесь результат проверки FileInfo:

var f = new FileInfo(filePath);
{P:\poolman\LY21\2015\LY21_2015-03-25_03.xml}
    base: {P:\poolman\LY21\2015\LY21_2015-03-25_03.xml}
    _name: "LY21_2015-03-25_03.xml"
    Directory: {P:\poolman\LY21\2015}
    DirectoryName: "P:\\poolman\\LY21\\2015"
    Exists: false
    IsReadOnly: true
    Length: '(var f = new FileInfo(filePath);).Length' threw an exception of type 'System.IO.FileNotFoundException'
    Name: "LY21_2015-03-25_03.xml"

Как я могу справиться с этим?

Ответы

Ответ 1

Если вы запустили процесс (например, Visual Studio) повышенный (как вы заявляете в комментариях), он не работает как ваш текущий пользователь Windows, а как администратор.

Администратор не имеет сопоставлений дисков, которые есть у вашего пользователя. Таким образом, ваша Visual Studio не может видеть диск P: вообще, поскольку это сопоставление специфично для вашего пользователя.

См. Как получить доступ к сетевым ресурсам из повышенного процесса в Windows 7?: если эта ошибка вызвана вашим текущим пользователем с диском P:, сопоставленным с сетевой диск, вы можете использовать UNC-путь к общему ресурсу: \\server\share\file.xml, где P: будет отображаться на \\server\share\.