我有一个 Win32 程序,如果它删除了其中的所有文件,它将删除一个目录。目录删除成功,目录被删除,但直到程序退出,目录仍会显示在Windows资源管理器窗口中。尝试在资源管理器中打开该文件夹将产生一条弹出错误消息,大意是:“位置不可用”“不可访问。访问被拒绝。”[确定]。
几乎立即在资源管理器窗口中为文件夹更新中的文件调用 _unlink()。除了退出程序之外,还有什么方法可以“刷新”文件系统。该程序通常会运行数天,因此在程序退出之前出现错误的幻象文件夹是 Not Acceptable 。有没有办法使用 _unlink() 执行此操作,或者我是否必须切换到调用的 Windows API 版本?
最佳答案
您是否持有该目录的任何描述符?使用 Process Explorer 检查包含其名称的文件句柄。
由于 Windows Explorer 在应用程序运行时显示目录,但在应用程序退出后停止显示,问题很可能是您的应用程序持有该目录的句柄或文件描述符,以某种方式阻止目录完全显示删除,或者它欺骗 Windows 资源管理器认为它仍然在文件系统中。
关于c++ - 如何让 _rmdir 删除的目录在 Windows 资源管理器中立即更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25459173/