使用FileSystemWatcher,我们可以监视特定文件系统的IO活动,但是无论如何都要知道哪个正在运行的进程正在导致该IO?
更具体地说,假设一个正在运行的进程即。 abc.exe正在驱动器D上创建一个文件text.txt。我们可以使用FileSystemWatcher监视已在驱动器D中创建了一个名为text.txt的文件,但我们是否可以通过编程方式确定名为abc.exe的进程正在创建该特定文件在驱动器D?
答案 0 :(得分:6)
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