如何使用C#监控进程的IO活动?

时间:2010-10-19 17:50:05

标签: c# process filesystemwatcher

使用FileSystemWatcher,我们可以监视特定文件系统的IO活动,但是无论如何都要知道哪个正在运行的进程正在导致该IO?

更具体地说,假设一个正在运行的进程即。 abc.exe正在驱动器D上创建一个文件text.txt。我们可以使用FileSystemWatcher监视已在驱动器D中创建了一个名为text.txt的文件,但我们是否可以通过编程方式确定名为abc.exe的进程正在创建该特定文件在驱动器D?

3 个答案:

答案 0 :(得分:6)

来自SysInternals的

handle.exe是一个命令行工具,允许以编程方式访问哪个程序打开了特定文件或目录。

C:\>handle.exe c:\Windows\system32\stdole2.tlb

生成此输出:

Handle v3.42
Copyright (C) 1997-2008 Mark Russinovich
Sysinternals - www.sysinternals.com
devenv.exe         pid: 5240    184: C:\Windows\System32\stdole2.tlb
Ssms.exe           pid: 5000    1F4: C:\Windows\System32\stdole2.tlb

可以通过编程方式解析。

http://technet.microsoft.com/en-us/sysinternals/bb896655.aspx

答案 1 :(得分:1)

不,这是不可能的。 FSW位于文件系统驱动程序堆栈中的非常低级别。它只能告诉文件系统正在被修改,它不知道由谁。这非常符合设计,它可能是一个位于世界各地的过程,使用互联网上的VPN连接来使用文件共享。您的请求没有合理的替代方案。

答案 2 :(得分:0)

我建议使用SysInternals实用程序,而不是自己动手。

http://technet.microsoft.com/en-us/sysinternals/bb842062.aspx