CopyFile成功,MoveFile失败并带有相同的参数 - C ++

时间:2017-07-25 10:32:38

标签: c++ windows

我正在处理一个非常令人沮丧的C ++问题。 我需要使用MoveFile函数,但这失败了。现在我正在使用像这样的CopyFile:

partialresult = L"D:\\CppWork\\test2\\decToBin.exe";
finala = L"D:\\CppWork\\test2\\PeFiles_\\decToBin.exe";

if (0 == CopyFile(partialresult, finala,b)) {/////
   DWORD err = GetLastError();
   std::cout << " -> Copy Fail" << std::endl;
}

复制正常,但是如果我用MoveFile替换CopyFile(不更改路径)失败,代码为0x20(MSDN doc - &gt; ERROR_FILE_NOT_FOUND )。 此外,如果我尝试使用CopyFile替换MoveFile,然后从预览路径中删除文件,则复制可正常工作,但删除会再次失败 ERROR_FILE_NOT_FOUND

bool b = false;
if (0 == CopyFile(partialresult, finala,b)) {//copy works but when try to delete the file give error
    DWORD err = GetLastError();
    std::cout << " -> Copy Fail" << std::endl;
    outFile   << " -> Copy Fail" << std::endl;
 }
  else {
    std::cout << " -> Copy Done" << std::endl;
    outFile   << " -> Copy Done" << std::endl;
    if (!DeleteFile(partialresult))
        DWORD err= GetLastError(); //error is "ERROR_FILE_NOT_FOUND"
  }

有没有人想知道这里发生了什么? 感谢。

1 个答案:

答案 0 :(得分:1)

我已经解决了CreateFile的问题,在进程完成后将它们标记为删除:

 CreateFile(path, GENERIC_READ,FILE_SHARE_DELETE,NULL, OPEN_EXISTING, FILE_FLAG_DELETE_ON_CLOSE,NULL);

谢谢大家:)