显示访问文件夹的进程

时间:2010-04-13 17:10:28

标签: c windows winapi directory

我正在尝试编写一个简单的程序,最好是在C中,它将监视给定的目录。每当进程访问该目录时,我只想打印出该进程的名称。这看起来很简单,但我在MSDN上找不到解决方案。有谁知道我需要哪些库调用,或任何有用的建议?我已经考虑过多次查询给定目录上有哪些进程处理,只是看着该列表的添加内容。这种方法看起来非常密集,我希望有一种更简单的方法。感谢。

2 个答案:

答案 0 :(得分:2)

我不确定是否有更简单的方法,但一种方法是使用file system filter driver。或者更轻松file system minifilter driver

您可以过滤,记录,跟踪,控制......所有IO。

答案 1 :(得分:1)

从用户模式无法支持此方法。您可以使用FindFirstChangeNotification API来判断文件或目录何时发生了变化,但这并不能告诉您是谁做的。你可能能够勾住一些东西来获取这些信息......但这当然不受支持。

如果您可以使用驱动程序,则可以使用Event Tracing for Windows获取此信息。这就是Sysinternals ProcMon使用的。但是安装驱动程序是一个非常具有侵入性的过程,驱动程序中的错误导致BSOD,安装驱动程序需要管理权限。要记住的事情。