以管理员身份运行Visual Studio不会看到映射的网络驱动器

Tho*_*oub 22 .net c#

我的方式File.Exists()(不)工作有问题:当我使用它时,它声称该文件不存在(来自立即窗口):

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

但是,如果我将文件路径复制/粘贴到资源管理器窗口URL(删除转义\),则会打开该文件.

因此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"
Run Code Online (Sandbox Code Playgroud)

我怎么处理它?

Cod*_*ter 31

如果您运行的进程(如Visual Studio)已升级(正如您在注释中声明的那样),则它不会以当前Windows用户身份运行,而是以管理员身份运行.

管理员没有您的用户拥有的驱动器映射.因此,您的Visual Studio根本看不到P:驱动器,因为该映射特定于您的用户.

请参阅如何从Windows 7中的提升进程访问网络共享?:如果此错误是由当前用户将P:驱动器映射到网络驱动器引起的,则可以使用共享的UNC路径:\\server\share\file.xml,P:将映射到的位置\\server\share\.

  • 不要映射它,改为使用完整的UNC路径,例如`\\ server\folder\path\file.txt` (3认同)
  • @DavidG 这并不容易,因为我正在处理一些我不会改变的事情......但现在我知道为什么,我可以平静地继续 (2认同)
  • 如果您不知道映射驱动器的 UNC 路径是什么,请以您的用户身份在 cmd 上运行“net use”。[网络使用文档](https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/gg651155(v%3Dws.11) ) (2认同)