从Windows中的内核模式我能够拦截和监控几乎所有在特定磁盘上执行的操作。当我为任何目的打开文件时,我会收到一个事件。

现在我想跟踪打开它的应用程序。我认为这应该是可能的,但不知道如何。

我正在使用Windows Win32 API中的标准文件管理功能。

提前致谢。

/罗伯特

有帮助吗?

解决方案

只需使用Win32 N.API从File句柄中获取pid。 这是15年的常见问题解答......

其他提示

Sysinternals Filemon (免费)可以做到这一点,而且更好他们描述了他们是如何做到的:

  

对于Windows 9x驱动程序,心脏   FileMon是在虚拟设备中   驱动程序,Filevxd.vxd。它是动态的   加载,并在其初始化它   通过安装文件系统过滤器   VxD服务,   IFSMGR_InstallFileSystemApiHook,to   将自己插入到调用链中   所有文件系统请求。在Windows上   NT FileMon的核心是一个文件   创建和的系统驱动程序   将过滤器设备对象附加到   目标文件系统设备对象   FileMon将看到所有IRP和   针对驱动器的FastIO请求。   当FileMon看到打开,创建或   关闭电话,它更新内部   用作映射的哈希表   内部文件句柄和文件之间   路径名称。每当看到电话时   它是基于句柄的,它查找了   在哈希表中处理以获取   显示的全名。如果一个   基于句柄的访问引用文件   在FileMon启动之前打开,FileMon   将无法在其中找到映射   哈希表,只会呈现   处理价值而不是。

- 亚当

Sysinternals做得很好并解释它,旧版本的一些源代码仍然可用这里,并且代码记录良好(imho)。这也是一个好的开始。

我会使用“handle.exe”。来自Sysinternals的应用程序。

或者,您是否真的尝试过这样做?

scroll top