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;
}
コピーOK動作しますが、私は(パスを変更せず)のMoveFileでCopyFileメソッドを置き換える場合は、コードの0x20(MSDN doc - >ERROR_FILE_NOT_FOUND)で失敗します。 MoveFileをCopyFileに置き換えて、プレビューパスからファイルを削除すると、コピーは機能しますが、削除が再度失敗します。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"
}
ここで何が起きているのでしょうか?おかげさまで
'ネットHELPMSGは32'(= 0x20の)」を与えます_プロセスがファイルにアクセスできません**他のプロセスで使用されているため** ._ "...は使用中のEXEですか?これは移動/削除に失敗しますが、コピーは正常に動作します。 – TripeHound
私はとても愚かです...私はエラーコードの値が16進数であるのを見ていません。そうです、exeは使用中です。使用中のプロセスでファイルを削除する方法はありますか? – Adrian
IIRC(ただし間違っているかもしれない)には、「使用しなくなったときに削除マークを付ける」というフラグがあります(ただし、Unixの動作と混同している可能性があります)。 – TripeHound