Запуск 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\
.