文件监视器 - 获取在Windows中创建文件的进程名称?

时间:2009-01-09 16:33:51

标签: .net windows io process filesystemwatcher

有没有一种很好的方法来获取在Windows中创建文件的进程名称?

我在Windows 2000 Server上有一个目录 C:\ WINNT \ Temp 正在填写名为的文件:
70618199个
21834082

它们的大小总是121,201 KB。

以编程方式,我可以“捕获”正在此位置删除文件的程序名称或服务名称吗?

更多信息:
我对此做了更多的研究。我重命名了文件TIFF并且能够打开它。
该机器通过自定义编写的ASP.NET应用程序充当文档搜索工具。 机器在E:\驱动器上包含大约50,000个TIFF文档。此机器还运行SQL Server 2000 w /全文索引打开。全文索引绝不会触及TIFF - 但它不应该因为这是SQL吗?但FTS确实要求打开索引服务。奇怪的是,这个TIFF似乎是Web服务器提供的最大功能。 IIS或索引服务是否使用C:\ WINNT \ Temp进行某种缓存?想法?

解决方案(可能?) 这似乎是Microsoft Indexing Service 当我关闭它时,这些文件都不会在WINNT \ Temp中创建 它似乎抓住它找到的最大文件并将其复制到WINNT \ Temp中。 这很奇怪。当您处理100MB + TIFF文件时,这可能会导致磁盘空间不足。非常讨厌。
我猜我将关闭索引服务的“Web”分支。

7 个答案:

答案 0 :(得分:3)

如果您想要与Windows的热熔器类似的东西,可以查看Process Explorer

它不会让您查看文件,但您可以查看当前正在运行的进程是否正在访问该临时目录并创建类似的命名临时文件。

答案 1 :(得分:3)

总有Process monitor取代了FileMon,它将告诉您哪个进程正在访问相关文件。

答案 2 :(得分:1)

我使用过FileMon.exe,,但仅适用于XP。

答案 3 :(得分:1)

我发现以编程方式从.NET执行此操作的唯一方法是运行Sysinternal's Command-line Handle App并传入文件名并读取控制台输出以尝试使用文件的打开句柄捕获源应用程序

否则其他人提到的公用事业就可以了。

答案 4 :(得分:0)

您始终可以将该目录设置为只读,并查看引发的内容。虽然如果它是文档服务器,您可能不想这样做。

答案 5 :(得分:0)

\RECYCLER\S-1-5-21-1482476501-1644491937-682003330-1013\service.exe

这是一种Recycler Virus。它创建了一个名为“Recycler”的隐藏文件夹在所有磁盘分区中,我无法从Windows安全模式中删除它们。诺顿,AVG卡巴斯基未能检测到或删除它。

我关闭系统还原,使用启动磁盘重新启动PC进入命令提示符并从所有驱动器中删除“Recycler”文件夹。使用命令rmdir / s c:\ recycler

这是我在Windows XP上唯一有用的东西。

答案 6 :(得分:-1)

只需使用标准的Win32 api(NAPI)。

见Adv。 Win32 api ng news://comp.os.ms-windows.programmer.win32 源代码(C)