删除指定文件夹以及文件下的文件

来源:互联网 发布:老人打字软件 编辑:程序博客网 时间:2024/06/08 03:14
BOOL CNewObject::DeleteFolder(LPCTSTR lpszPath)//删除文件夹以及文件夹内的文件{ SHFILEOPSTRUCT FileOp; SecureZeroMemory((void*)&FileOp,sizeof(SHFILEOPSTRUCT));//secureZeroMemory和ZeroMerory的区别//根据MSDN上,ZeryMerory在当缓冲区的字符串超出生命周期的时候,//会被编译器优化,从而缓冲区的内容会被恶意软件捕捉到。//引起软件安全问题,特别是对于密码这些比较敏感的信息而说。//而SecureZeroMemory则不会引发此问题,保证缓冲区的内容会被正确的清零。//如果涉及到比较敏感的内容,尽量使用SecureZeroMemory函数。FileOp.fFlags = FOF_NOCONFIRMATION;//操作与确认标志 FileOp.hNameMappings = NULL;//文件映射 FileOp.hwnd = NULL;//消息发送的窗口句柄;FileOp.lpszProgressTitle = NULL;//文件操作进度窗口标题 FileOp.pFrom = lpszPath;//源文件及路径 FileOp.pTo = NULL;//目标文件及路径 FileOp.wFunc = FO_DELETE;//操作类型 return SHFileOperation(&FileOp) == 0;}

//2016.6.1更新,解决有时候无法删除指定文件夹的问题

BOOL CMainFrame::DeleteFolder(CString lpszPath)//删除文件夹以及文件夹内的文件{ CHAR szFromPath[_MAX_PATH];//源文件路径memcpy(szFromPath, lpszPath, lpszPath.GetLength());szFromPath[lpszPath.GetLength() + 1] = '\0';//必须要以“\0\0”结尾,不然删除不了szFromPath[lpszPath.GetLength() + 2] = '\0';SHFILEOPSTRUCT FileOp; SecureZeroMemory((void*)&FileOp, sizeof(SHFILEOPSTRUCT));//secureZeroMemory和ZeroMerory的区别//根据MSDN上,ZeryMerory在当缓冲区的字符串超出生命周期的时候,//会被编译器优化,从而缓冲区的内容会被恶意软件捕捉到。//引起软件安全问题,特别是对于密码这些比较敏感的信息而说。//而SecureZeroMemory则不会引发此问题,保证缓冲区的内容会被正确的清零。//如果涉及到比较敏感的内容,尽量使用SecureZeroMemory函数。FileOp.fFlags = FOF_NOCONFIRMATION;//操作与确认标志 FileOp.hNameMappings = NULL;//文件映射 FileOp.hwnd = NULL;//消息发送的窗口句柄;FileOp.lpszProgressTitle = NULL;//文件操作进度窗口标题 FileOp.pFrom = szFromPath;//源文件及路径 FileOp.pTo = NULL;//目标文件及路径 FileOp.wFunc = FO_DELETE;//操作类型 return SHFileOperation(&FileOp) == 0;}


                                             
1 0