【问题标题】:C# - Access to mounted networkdriveC# - 访问挂载的网络驱动器
【发布时间】:2013-06-02 14:39:28
【问题描述】:

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

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

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

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

谢谢!

【问题讨论】:

  • 对我来说很好,刚刚测试过。
  • 好的,谢谢。我不知道为什么它不应该工作?!应该可以像本地驱动器一样访问。
  • 您确定文件夹test 存在吗?您可以使用文件资源管理器导航到该路径吗?
  • 是的,文件夹存在。我可以导航到这个文件夹,然后创建文件等等。我的操作系统是 Windows 8,如果您认为这可能会产生影响。
  • 我刚刚测试了当我以管理员身份运行应用程序时这是否有效,但它失败了。所以原因很可能是因为您执行代码的用户无权访问该路径。

标签: c# network-share


【解决方案1】:

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

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

(...) 打开一个管理命令提示符 - 你有一个 一直提升令牌 - 并创建匹配的驱动器映射 那里(净使用 h:\server\share1)。由于标准用户和 提升管理员对什么是“H:”驱动有一个共同的认识 意思是,一切正常。

【讨论】:

  • 驱动器只是映射到映射驱动器的用户下。听起来很合理,不是吗?如果您以用户身份映射驱动器,并以管理员身份运行程序,则管理员不会映射驱动器。
【解决方案2】:

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

首先,Directory.Exists() 方法适用于网络安装的驱动器。您在工作中获得DirectoryNotFoundException 的原因可能还有更多。

来自MSDN

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

我相信你有这个,但由于我们无法访问你的计算机,我们无法知道真正的原因:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-23
    • 1970-01-01
    • 2017-07-02
    • 1970-01-01
    相关资源
    最近更新 更多