Я использую приведенный ниже код c ++ для удаления временных файлов из указанного c пути.
C: \ Users \ falcon \ AppData \ Local \ Temp \ ~ GPG.TMP \
Когда внутри папки ~ GPG.TMP существует несколько файлов, сначала она удаляется и, наконец, сама папка удаляется. На этом последнем шаге RemoveDirectory(sPathName)
, хотя я не получаю никаких исключений, папка фактически не удаляется, но когда я пытаюсь получить к ней доступ (внешне или программно), я получаю сообщение об ошибке № 13 «Отказано в доступе». Почему это происходит?
void CFileOperation::DoDelete(CString sPathName)
{
CFileFind ff;
CString sPath = sPathName;
if (CheckPath(sPath) == PATH_IS_FILE)
{
if (!CanDelete(sPath))
{
m_bAborted = true;
return;
}
if (!DeleteFile(sPath)) throw new CFExeption(GetLastError());
return;
}
PreparePath(sPath);
sPath += "*.*";
BOOL bRes = ff.FindFile(sPath);
while(bRes)
{
bRes = ff.FindNextFile();
if (ff.IsDots()) continue;
if (ff.IsDirectory())
{
sPath = ff.GetFilePath();
DoDelete(sPath);
}
else DoDelete(ff.GetFilePath());
}
ff.Close();
if (!RemoveDirectory(sPathName) && !m_bAborted) {
throw new CFExeption(GetLastError());
}
}