使用SHFileOperation删除文件夹遇到的问题
程序使用SHFileOperation删除文件夹,执行完之后返回值为0(正确),但在File Explorer中刷新之后被删除文件夹又出现了,双击它,提示“拒绝访问”之类的信息。在命令行下dir也会显示该文件夹,但无法访问。直到程序退出之后,文件夹才自动消失。
另,在使用该API前程序必须执行一个往该目录下写文件的分支才可重现此问题,否则可正常删除目录。但该写文件分支在写完成之后文件句柄确已关闭,而在执行SHFileOperation前,尝试手动在File Explorer中删除该目录的确也能正常执行。
代码如下:
SHFILEOPSTRUCT shfos = { 0 };
shfos.hwnd = NULL;
shfos.wFunc = FO_DELETE;
shfos.fFlags = FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOERRORUI;
shfos.pFrom = szPathBuffer; // 双'\0'结尾路径字符串
shfos.pTo = NULL;
shfos.lpszProgressTitle = NULL;
int ret = ::SHFileOperation(&shfos);
另,在使用该API前程序必须执行一个往该目录下写文件的分支才可重现此问题,否则可正常删除目录。但该写文件分支在写完成之后文件句柄确已关闭,而在执行SHFileOperation前,尝试手动在File Explorer中删除该目录的确也能正常执行。
代码如下:
SHFILEOPSTRUCT shfos = { 0 };
shfos.hwnd = NULL;
shfos.wFunc = FO_DELETE;
shfos.fFlags = FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOERRORUI;
shfos.pFrom = szPathBuffer; // 双'\0'结尾路径字符串
shfos.pTo = NULL;
shfos.lpszProgressTitle = NULL;
int ret = ::SHFileOperation(&shfos);
...全文
相关推荐
vc中删除文件夹以及文件夹中的内容的三种方法
vc中删除文件夹以及文件夹中的内容的三种方法,以及解决XP删除文件夹出错的方法!!
PB使用SHFileOperation函数复制文件夹(文件)API
在工作中遇到的问题,结合网上的各方资料现整理出此脚本! 此脚本在PB环境中已经测试通过,请放心使用,如有疑问请密我!
vc 文件夹的复制,移动,删除
用vc6.0做的可以实现文件夹的复制,移动,删除。并且有文件说明。 复制、移动、删除的文件夹下的所有文件包括子文件夹。 使用时注意在代码中修改所复制、移动、删除的文件夹路径,就可以使用了。
C++删除指定文件夹或指定格式文件
可完全删除非空文件夹
VC++ 复制文件到指定系统临时目录
调用api函数SHFileOperation 实现将指定目录的文件夹复制到系统临时目录。 测过了,长短文件,都没问题


