C++ MoveFileEx-返回GetLastError():17

C++ MoveFileEx-返回GetLastError():17,c++,winapi,movefileex,C++,Winapi,Movefileex,我正在使用MoveFileEx移动文件。根据用户输入的内容,文件移动的位置可能在单独的硬盘上。在这种情况下,MoveFileEx失败,GetLastError报告错误ID为17,即: 错误\u非\u相同\u设备17(0x11)系统无法将文件移动到 不同的磁盘驱动器。 () 那么,在VC++中,我将如何处理这样的情况,并移动文件,即使它位于单独的硬盘驱动器上 我使用的代码如下:(虽然我认为这与此无关,但除了将文件移动到另一个硬盘驱动器时,其他一切都很好。)的文档说明了这一点: 移动文件时,目标可以

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

错误\u非\u相同\u设备17(0x11)系统无法将文件移动到 不同的磁盘驱动器。 ()

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

我使用的代码如下:(虽然我认为这与此无关,但除了将文件移动到另一个硬盘驱动器时,其他一切都很好。)

的文档说明了这一点:

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


因此,如果源驱动器与目标驱动器不同,简单地将
MOVEFILE\u COPY\u ALLOWED
标记转换为
dwFlags

我也会遇到同样的问题。我尝试了您建议的解决方案,但出现错误\u访问\u拒绝5(0x5)。有什么建议吗?如果文件已经存在,我会得到错误,但是我对执行正确的移动操作感兴趣。