• 代码删除文件夹,小心资源管理器报错,甚至崩溃【原】


      前两天,同事提了个需求,要在产品卸载时需要清除日志和用户信息,说白了就是要删除几个目录,心想小case,立马开始code,递归(FindFirstFile&FindNextFile)删除目录里的文件(DeleteFile),最后RemoveDirectory, 编码完后,本地验证ok, 代码提交,等待出包。

      结果出包完,自己安装完再卸载,结果系统资源管理器报错了,说什么引用了不存在的目录。。。。,一时也没想出咋回事,只知道肯定是自己添加的这段代码导致的。但上崔着要出包,只好回退代码 ,解决问题下个版本再上了。

      然后就开始调试代码 ,F10跟了一遍,日志也打了,没发现有什么问题,目录也删除成功了呀。如此试了好几遍,还检查了其他相关的代码,都没发现问题。折腾了几遍,终于发现规律了,原来当你在资源管理器中打开了你要删除的目录时,这时你执行代码强制删除这个目录,系统就会报错,甚至导致资源管理器重启。到这问题算是找到了,怎么解决?首先想到的方法就是,只删除文件夹中的文件而不删除目录。方法二就是检测文件夹是否被打开,如果是,就不删除目录。我选择了方法一,屏掉两行代码,问题解决。至于方法二,我没找到方法去检测一个文件夹是否在资源管理器中被打开。哪位大牛如果知道如何用C++代码实现方法二,请不吝告之,谢谢。

      好了,就是这样了,吃一堑长一智,下次注意。

  • 相关阅读:
    require() 源码解读
    那些JS容易忽略的题
    javascript:void(0);与return false
    location.href
    IE CSS Bugs 列表和解决方法
    npm 常用命令
    移动开发不能不知道的事-meta
    Canvas介绍
    用CSS变形创建圆形导航
    一个传统行业互联网系统的架构演化(Week 4)
  • 原文地址:https://www.cnblogs.com/wcadaydayup/p/4341998.html
Copyright © 2020-2023  润新知