【问题标题】:Running Visual Studio as Administrator does not see mapped network drives [duplicate]以管理员身份运行 Visual Studio 看不到映射的网络驱动器 [重复]
【发布时间】:2015-12-19 07:43:55
【问题描述】:

我对@9​​87654323@(不)工作的方式有疑问:当我使用它时,它声称该文件不存在(来自即时窗口):

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

但如果我将文件路径复制/粘贴到资源管理器窗口 url(删除转义 \它会打开文件

所以File.Exists() 声称现有文件不存在,这让我很烦。

这与 length of the path(即 43)无关,FileInfo 并不是建议 here 的更好选择。

这是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"

我该如何处理?

【问题讨论】:

  • 做一些研究,检查文档:true 如果调用者具有所需的权限并且路径包含现有文件的名称。文件的权限是什么?您的进程以哪个用户身份运行?我猜你是在没有适当权限的 ASP.NET 上下文中运行它。
  • @PaulZahra 这是一个映射驱动器
  • 这不应该被标记为建议查询的重复,因为建议的查询没有考虑到 VS 以提升的权限运行的事实,这是真正的问题,建议的重复没有讨论这个这点对我来说,这个问题选择的答案确实回答了我的问题,建议的 dup 没有回答我的问题。
  • 作为一个普通人,我的 VS 在以管理员身份运行时看不到映射驱动器。我绝对不会去搜索“为什么 System.IO.File.Exists(string path) return false”。
  • @ZachSmith 这就是为什么我没有删除这个问题并且它得到了这么多的赞成票;)

标签: c# .net


【解决方案1】:

如果您运行提升权限的进程(如 Visual Studio)(如您在 cmets 中声明的那样),则它不会以您当前的 Windows 用户身份运行,而是以管理员身份运行。

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

请参阅How to access network shares from an elevated process in Windows 7?:如果此错误是由当前用户将 P: 驱动器映射到网络驱动器引起的,则可以改用共享的 UNC 路径:\\server\share\file.xml,其中 P: 将是映射到\\server\share\

【讨论】:

  • 这似乎是正确的答案。如何将此驱动器映射到管理员?
  • 不要映射它,而是使用完整的 UNC 路径,例如\\server\folder\path\file.txt
  • @DavidG 这并不容易,因为我正在处理一些我不会改变的东西......但现在我知道为什么了,我可以平静地继续下去
  • @Thomas 例如,您可以将基本路径放入配置中,例如 AppSettings 部分。然后在调试时它是一个 UNC 路径(“\\server\folder\Xml\”),而在发布时它是映射驱动器(“P:\Xml\”)。当然,管理员可能无法访问共享,因此您必须让用户登录共享,如 Paul 演示的那样。
  • 如果您不知道映射驱动器的 UNC 路径是什么,请以您的用户身份在 cmd 上运行 net useNet use docs
猜你喜欢
  • 1970-01-01
  • 2016-09-24
  • 2011-10-04
  • 1970-01-01
  • 2011-10-11
  • 1970-01-01
  • 2011-06-12
  • 2023-03-27
  • 1970-01-01
相关资源
最近更新 更多