我正在處理一個非常令人沮喪的C++問題。 我需要使用MoveFile函數,但是失敗。現在我使用的CopyFile這樣的:CopyFile成功,MoveFile失敗,具有相同的參數 - C++
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 - >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"
}
有沒有人有一些ideea這裏發生了什麼? 謝謝。
'NET HELPMSG 32'(= 0×20)給出「 _進程無法訪問該文件**,因爲它正在被另一個進程使用** ._「...是正在使用的EXE嗎?這將失敗移動/刪除,但讓複製工作正常。 – TripeHound
我很愚蠢......我沒有看到錯誤代碼的值是十六進制。這是正確的,exe文件正在使用中。有沒有辦法使用正在使用的進程刪除文件? – Adrian
IIRC(但可能是錯誤的)有一個標誌表示「在不再使用時將其標記爲刪除」(但我可能會對Unix的工作方式感到困惑)。 – TripeHound