MFC 删除文件解决方案

MFC 删除文件
请教一个问题
我的删除程序
有些文件夹不能删除?
程序如下
BOOL DeleteDirectory(char *DirName)
{
  CFileFind tempFind;
  char tempFileFind[MAX_PATH];
  sprintf(tempFileFind,"%s\\*.*",DirName);
  BOOL IsFinded=(BOOL)tempFind.FindFile(tempFileFind);
  while(IsFinded)
  {
  IsFinded=(BOOL)tempFind.FindNextFile();
  if(!tempFind.IsDots())
  {
  char foundFileName[MAX_PATH];
  strcpy(foundFileName,tempFind.GetFileName().GetBuffer(MAX_PATH));
  if(tempFind.IsDirectory())
  {
  char tempDir[MAX_PATH];
  sprintf(tempDir,"%s\\%s",DirName,foundFileName);
DeleteDirectory(tempDir);
  }
  else
  {
  char tempFileName[MAX_PATH];
  sprintf(tempFileName,"%s\\%s",DirName,foundFileName);
SetFileAttributes(tempFileName, 0); 
  DeleteFile(tempFileName);
  }
  }
  }
  tempFind.Close();
  if(!RemoveDirectory(DirName))
{
TRACE("%d\n",GetLastError());
return FALSE;
}
  return TRUE;
}
这个程序删除的时候,有些文件夹不能删除,我通过TRACE("%d\n",GetLastError());
报出来的错误号是5
请问这是什么原因阿 ?

------解决方案--------------------

99% 是只读文件!

删除文件以前,用下面的函数把只读去掉:

C/C++ code
SetFileAttributes(csPathName,FILE_ATTRIBUTE_NORMAL);