Directory.Exists - 访问被拒绝 C# 的 UNC 路径

Posted

技术标签:

【中文标题】Directory.Exists - 访问被拒绝 C# 的 UNC 路径【英文标题】:Directory.Exists - UNC Path with Access Denied C# 【发布时间】:2009-09-29 17:10:48 【问题描述】:

我正在编写一些代码来访问目录并索引它找到的文件。用户可以输入 UNC 路径并模拟另一个用户来访问该目录。我正在使用 Directory.Exists 在尝试访问之前查看他们输入的路径是否有效。

这适用于本地路径,但在尝试访问我知道我无权访问的 UNC 路径时,Directory.Exists 会返回 true。

我的理解是,Directory.Exists 不会检查特定路径是否可以“访问”它是否存在。

我还能用什么来检查一个目录是否存在并且我对它有读取权限?

此时我不知道目录中的任何文件名。

谢谢!

【问题讨论】:

【参考方案1】:

为什么不简单地尝试通过枚举文件来执行索引并处理无法访问时生成的异常?即使您访问给定的特定目录,也总有可能无法访问子文件夹或单个文件。

【讨论】:

【参考方案2】:

看看System.Security.AccessControl.DirectorySecurity 类。

【讨论】:

【参考方案3】:

有趣。我在想\目录\。尽管 \directory 应该没问题,但不允许 \directory\.也可以,我认为这是一个错误,因为我认为'。'文件在目录下。

【讨论】:

这对我来说很有意义,如果您可以看到目录但无法打开它,那么 Directory.Exists 将返回 true。这不是你看到的吗? @chsh,我同意,但对我来说是 '.'目录下的“文件”不应该是可见的,因为它是“下”。是的,我理解 .指向自己。

以上是关于Directory.Exists - 访问被拒绝 C# 的 UNC 路径的主要内容,如果未能解决你的问题,请参考以下文章

对路径“xxxxx”的访问被拒绝。

访问我刚刚创建的目录时出现 UnauthorizedAccessException

区分大小写的 Directory.Exists / File.Exists

在Directory.Delete Directory.Exists有时返回true?

文件系统路径和 Directory.Exists()

Directory.Exists 用于 ASP.NET 中的网络路径