【发布时间】:2012-11-24 12:18:32
【问题描述】:
我为教育制作了带有间谍软件功能的程序,我需要在程序中知道文件系统何时更改文件,以及正在更改的文件。
如何在 C++ 中做到这一点?
【问题讨论】:
我为教育制作了带有间谍软件功能的程序,我需要在程序中知道文件系统何时更改文件,以及正在更改的文件。
如何在 C++ 中做到这一点?
【问题讨论】:
您可能正在寻找 Win32 Directory Change Notifications。还有一个名为 FileSystemWatcher 的 .NET API 公开了相同的功能。
链接页面为订阅文件系统通知提供了一个很好的示例。要对文件系统更改进行更多低级访问,您必须查看Change Journals。该 API 要复杂得多,因此第一个目录更改通知可能是您最好的起点。
为了方便起见,Linux 内核为此有一个子系统,称为inotifiy。
【讨论】:
FILE_NOTIFY_CHANGE_LAST_WRITE 标志查看该树中的文件更改。但是,您必须注意有关文件系统缓存的警告。
在 Windows 上,查看 SHChangeNotifyRegister()。它不仅告诉您发生了什么样的更改,而且还告诉您哪些确切的文件被更改了。
【讨论】: