每当打开某种types的文件时,是否可以执行某些代码? 在我的情况下,我想“听”video文件(“.avi,mp4等)”是打开(通过Windows文件浏览器shell,或者也许直接从video播放器?),以便我可以存储播放的video的历史logging。
一个小时的谷歌search没有任何结果,所以我转向你的计算器。 请指向正确的方向。
谢谢。
从任意进程捕获文件系统事件(打开/读/写)的最好(也是唯一合理的方法)是通过编写一个File System MiniFilter
如果你正在开发一个商业产品,请不要像“CreateFile”那样“挂钩”Usermode API。 这样做需要大量的特定于平台的攻击,这是一个兼容性的噩梦。
我不会挂钩CreateFile
这个工作。 Windows有内置的机制来处理这样更干净的工作。
ReadDirectoryChangesW
与FILE_NOTIFY_CHANGE_LAST_ACCESS
标志是处理这个简单的方法。 任何时候打开一个文件,它的最后访问时间将会被更新,所以这个文件在任何时候都会被打开。
虽然这种情况非常罕见,但是在极少数情况下可能会 “错过”更改1 。 如果你必须有100%的准确性(而不是99.9%),那么你可以阅读更改日志 ,但是这是一个额外的工作,你可能不关心的优点。
1.有一种情况不是(一定)罕见,但您可能会关心: ReadDirectoryChangesW
只有在/如果您的程序正在运行时才起作用。 即使代码没有运行,更改日记也会让您知道发生的事情。