使用 FileInfo.CopyTo 将文件复制到映射的网络驱动器
Posted
技术标签:
【中文标题】使用 FileInfo.CopyTo 将文件复制到映射的网络驱动器【英文标题】:Copy file fo mapped network drive using FileInfo.CopyTo 【发布时间】:2015-09-28 08:08:29 【问题描述】:我尝试将文件复制到映射的网络驱动器,但总是收到消息“找不到路径的一部分...”。我尝试了不同的映射网络驱动器,因此我可以排除凭据问题(它既不适用于与不同凭据连接的驱动器,也不适用于我的普通用户)
try
fi.CopyTo(SystemReg.TargetPath + fi.Name);
catch (Exception e)
SystemReg.Log.AppendLine("Copy failed! " + Environment.NewLine + e.Message);
SystemReg.TargetPath 是从 XML 文件中读取的。如果我使用像 D:\temp\
这样的本地路径,它可以完美地工作,但是例如X:\temp\
将 X 作为映射驱动器失败。
在调用我的程序之前,我还尝试使用“net use...”在批处理文件中运行我的程序,它也失败了。
【问题讨论】:
驱动器名称的范围仅限于您的计算机。该驱动器在任何其他机器上可能具有完全不同的名称。使用机器名称。\\MACHINE\folder$
我仍然觉得这很奇怪。 是否您试图从另一台未映射的计算机访问您在一台计算机上映射的驱动器?那当然行不通。但我假设您只在一台计算机上,驱动器已映射,您有权限。您可以手动复制(使用资源管理器)。阅读FileInfo.CopyTo()
文档(msdn.microsoft.com/en-us/library/f0e105zt%28v=vs.110%29.aspx),我读到如果“文件被移动到不同的驱动器”,则会抛出UnauthorizedAccessException
。真的是这样吗?为什么?如果你用机器名代替它为什么会起作用?
【参考方案1】:
您应该使用计算机地址而不是驱动器名称。
例如,如果您的计算机地址是192.168.0.200
,它保存共享文件夹temp\
,那么您的完整路径是\\192.168.0.200\temp\
【讨论】:
以上是关于使用 FileInfo.CopyTo 将文件复制到映射的网络驱动器的主要内容,如果未能解决你的问题,请参考以下文章
使用 Nodejs 将文件从 Azure 存储 blob(容器)复制到 Azure 文件共享