MoveFileEx - 返回GetLastError():17

use*_*109 2 c++ winapi movefileex

我正在使用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(虽然它与我认为不相关,除了将文件移动到另一个硬盘驱动器外,一切都很好.)

Ken*_*ite 12

MoveFileEx的文档清楚地说明了这一点:

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

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

  • 我也有同样的问题.我尝试了你建议的解决方案,我得到了ERROR_ACCESS_DENIED 5(0x5).有什么建议?如果文件已经存在,我会收到错误,但是我有兴趣执行正确的移动操作. (2认同)