删除目录功能访问被拒绝

Remove Directory function access denied

我正在使用下面的 C++ 代码从特定路径删除临时文件。

C:\Users\falcon\AppData\Local\Temp\~GPG.TMP\

当 ~GPG.TMP 文件夹中存在一些文件时,它首先删除,最后删除文件夹本身。在这最后一步 RemoveDirectory(sPathName) 中,虽然我没有收到任何异常,但该文件夹实际上并未被删除,但是当我尝试访问它时(无论是外部还是以编程方式),我收到错误号 13,即 "Permission denied"。为什么会这样?

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());


    }

}

根据 MSDN: RemoveDirectory 函数将目录标记为在关闭时删除。因此,在目录的最后一个句柄关闭之前,目录不会被删除。

而且,恕我直言,错误 13 是 ERROR_INVALID_DATA