2

我的电脑上安装了一些网络共享。我可以在 Windows 资源管理器中看到它们,包括驱动器号等。如果我尝试使用 c# 读取或写入,我总是会得到一个DirectoryNotFoundException. 检查目录是否存在的方法

Directory.Exists(@"N:\test")

返回falseN:\是已安装的共享)。如果我在资源管理器中打开路径,则路径存在。

你能想象,问题可能是什么?

谢谢!

4

2 回答 2

1

我刚刚测试了当我以管理员身份运行应用程序时这是否有效,但它失败了。所以原因很可能是因为您执行代码的用户无权访问该路径。

当您确认您确实以提升的权限运行应用程序时,您应该遵循此答案中也建议的指示:https ://stackoverflow.com/a/11268410/674700 :

(...) 打开一个管理命令提示符 - 您一直在其中有一个提升的令牌 - 并从那里创建一个匹配的驱动器映射 (net use h: \server\share1)。由于标准用户和高级管理员对“H:”驱动器的含义有共同的理解,因此一切正常。

于 2013-06-02T15:46:01.350 回答
0

好吧,我只是试着假设为什么你会得到这个异常,就是这样;

首先,该Directory.Exists()方法适用于网络安装的驱动器。DirectoryNotFoundException你参与工作的原因可能还有更多。

来自MSDN

如果在尝试确定指定文件是否存在时发生任何错误,Exists 方法将返回 false。这可能发生在引发异常的情况下,例如传递包含无效字符或过多字符的文件名、磁盘故障或丢失,或者调用者没有读取文件的权限。

我相信您有其中之一,但是由于我们无法访问您的计算机,因此我们无法知道真正的原因:)

于 2013-06-02T15:07:21.800 回答