c++ - 如何让 _rmdir 删除的目录在 Windows 资源管理器中立即更新?

标签 c++ c windows file-io

我有一个 Win32 程序,如果它删除了其中的所有文件,它将删除一个目录。目录删除成功,目录被删除,但直到程序退出,目录仍会显示在Windows资源管理器窗口中。尝试在资源管理器中打开该文件夹将产生一条弹出错误消息,大意是:“位置不可用”“不可访问。访问被拒绝。”[确定]。

几乎立即在资源管理器窗口中为文件夹更新中的文件调用 _unlink()。除了退出程序之外,还有什么方法可以“刷新”文件系统。该程序通常会运行数天,因此在程序退出之前出现错误的幻象文件夹是 Not Acceptable 。有没有办法使用 _unlink() 执行此操作,或者我是否必须切换到调用的 Windows API 版本?

最佳答案

您是否持有该目录的任何描述符?使用 Process Explorer 检查包含其名称的文件句柄。

由于 Windows Explorer 在应用程序运行时显示目录,但在应用程序退出后停止显示,问题很可能是您的应用程序持有该目录的句柄或文件描述符,以某种方式阻止目录完全显示删除,或者它欺骗 Windows 资源管理器认为它仍然在文件系统中。

关于c++ - 如何让 _rmdir 删除的目录在 Windows 资源管理器中立即更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25459173/

相关文章:

c++ - 无法编译项目 : error in locale. h 文件

c++ - 获取等于或大于原始值的整数 x 的最接近倍数

c - Gstreamer - 收听 RTP 流时延迟过多

c - 从 ctags 文件中提取枚举值

windows - 获取 key 错误 : 'WINDOWSSDKDIR' while running Chromium browser source code on Windows

c++ - 复制构造函数 VS 以类指针为参数的构造函数

C++ std::bind 到 std::function,在 VS2015 中出了什么问题?

c - Linux 中的依赖解析

windows - 转换 **haml** 和 **scss** 文件的最快和最有效的方法? (Windows 上的 ruby )

java - 如何清理由 Runtime.exec() 启动的进程?