File.Move 不适用于 UNC 路径

Posted

技术标签:

【中文标题】File.Move 不适用于 UNC 路径【英文标题】:File.Move not working properly for UNC paths 【发布时间】:2008-10-12 07:47:09 【问题描述】:

我正在尝试使用 File.Move 将文件从一个 UNC 位置移动到另一个位置。如果目标的 UNC 路径恰好是本地计算机,这会爆炸(错误:访问路径被拒绝)。示例File.Move(@"\\someServer\path\file.txt", @"\\blah2\somewhere\file.txt")。这假设有一个名为 \\someServer 的网络共享,并且我的本地计算机名称是 blah2。将 \\blah2 更改为 C:\,一切都很好。

【问题讨论】:

【参考方案1】:

也许这是一个错字,但它不应该是@"\\blah2\somewhere\file.txt",即带有两个反斜杠吗?

【讨论】:

【参考方案2】:

UNC 路径中的服务器名称不应该以两个斜杠开头吗? 例如@"\\someServer\path\file.txt"

【讨论】:

鉴于我必须为两个斜线写三个斜线才能出现在我的帖子上,我现在猜你也有同样的问题,而且你的路径是正确的。抱歉,我不能提供更多帮助 :-)【参考方案3】:

对于 Windows 文件共享,写入访问权限需要在另一个位置(ACL 除外)指定权限 - 在共享权限中。如果您使用的是 C$ 之类的管理共享,则已经启用了写入权限,但如果您使用的是为此明确设置的共享,请确保在“共享权限”下启用了“更改”选项。

请注意,您通常可以通过检查计算机管理 -> 事件查看器下的安全事件日志来解决权限错误,可能还有关于它如何失败的其他详细信息。在管理工具 -> 本地安全策略 -> 本地策略 -> 审计策略下启用对登录失败的审计也可以在事件日志中提供更多详细信息。

【讨论】:

【参考方案4】:

我似乎无法重现该错误。也许它与权限有关?您可以使用 UNC 地址移动到本地计算机上的任何位置,还是它们都抛出异常?

【讨论】:

【参考方案5】:

我遇到了同样的问题,文件被另一个程序(Windows 资源管理器)锁定,在我的情况下,我使用解锁器解锁了文件。这发生在我使用 UNC 路径访问文件时,File.Move 方法可以正常通过本地路径访问它。

我觉得通过 UNC/本地路径手动重命名文件时没有出现这种行为。

【讨论】:

【参考方案6】:

File.Move 目标路径不接受 UNC 路径

http://support.microsoft.com/KB/112744

【讨论】:

以上是关于File.Move 不适用于 UNC 路径的主要内容,如果未能解决你的问题,请参考以下文章

UNC 路径上的 VC++ Createprocess

C#:System.UnauthorizedAccessException:当 File.Move 或 File.Delete [重复] 时拒绝访问路径

如何在 Java 中检查文件大小而不从 UNC 路径读取文件?

在 C# 中将 UNC 路径转换为本地路径

在开始作业脚本块中使用 \\?\UNC\ (长 unc 路径)时,get-itemPropertyValue 不绑定路径

您可以在 Windows 中禁用 UNC 路径吗?