【问题标题】:MoveFileEx - returning GetLastError(): 17MoveFileEx - 返回 GetLastError(): 17
【发布时间】:2017-03-07 21:13:42
【问题描述】:

我正在使用 MoveFileEx 移动文件。根据用户输入的内容,文件移动的位置可能位于单独的硬盘驱动器上。在这种情况下,MoveFileEx 失败,GetLastError 报告错误 ID 17,即:

ERROR_NOT_SAME_DEVICE 17 (0x11) 系统无法将文件移动到 不同的磁盘驱动器。 (http://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx)

那么,在 VC++ 中,我将如何处理这种情况并移动文件,即使它位于单独的硬盘上?

我正在使用的代码在这里:https://gist.github.com/Whitetigerswt/9180030(虽然我认为它不相关,但除了将文件移动到另一个硬盘驱动器之外,一切都很好。)

【问题讨论】:

    标签: c++ winapi movefileex


    【解决方案1】:

    MoveFileEx 的文档说明了这一点:

    移动文件时,目标可以位于不同的文件系统或卷上。 如果目的地在另一个驱动器上,您必须在 dwFlags 中设置 MOVEFILE_COPY_ALLOWED 标志。

    因此,如果源驱动器与目标驱动器不同,只需将MOVEFILE_COPY_ALLOWED 标志或dwFlags 标记。

    【讨论】:

    • 我也有同样的问题。我尝试了您建议的解决方案,我得到了 ERROR_ACCESS_DENIED 5 (0x5)。有什么建议么?如果文件已经存在,我会收到错误消息,但是我有兴趣执行正确的移动操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-15
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    • 2015-04-04
    • 2016-11-23
    • 1970-01-01
    相关资源
    最近更新 更多