Windows 资源管理器以一种棘手的方式监视目录更改?

Windows explorer monitors directory changes in a tricky way?

我有一个沙盒系统,通过挂钩 Ntxxx 文件系统 APIs 来重定向文件修改。一件有趣的事情是,如果我在我的沙箱中的记事本->File/Open 对话框中移动文件,例如从 desktop\a.txt 到 desktop\b\a.txt,真实桌面上的 a.txt 文件就消失了,我按 F5 刷新真实桌面后它又回来了。实际上桌面文件夹根本没有变化,因为所有的变化都是直接的。我知道大多数应用程序都使用 API 之类的 ReadDirectoryChanges 来监视更改,但显然资源管理器正在做一些不同的事情。我尝试了像 https://directorymonitor.com/ 这样的工具,它们在桌面上没有观察到任何变化。我猜想 SHFileOperation 以某种方式在内部与资源管理器交互,但谁知道细节以及如何阻止此通知?用户看到一个文件实际上还在那里却消失了,这真的很奇怪。

windows 调用 windows_storage!SHChangeNotify 而不是 shell32 中的那个。为什么 Windows 有两个相同的 API,它们是不同的吗?