1

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


我在 Windows 2000 Server C:\WINNT\Temp上有一个目录,其中填满了如下文件:
70618199
21834082

它们的大小始终为 121,201 KB。

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

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

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

4

7 回答 7

3

如果你想要类似于 fuser for windows 的东西,你可以查看Process Explorer

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

于 2009-01-09T16:38:23.397 回答
3

总是有进程监视器代替 FileMon,它会告诉你哪个进程正在访问有问题的文件。

于 2009-01-09T17:06:58.207 回答
1

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

于 2009-01-09T16:45:05.800 回答
1

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

否则其他人提到的实用程序会很好。

于 2009-01-09T19:35:43.740 回答
0

您始终可以将该目录设置为只读,然后看看会发生什么。虽然如果它是一个文档服务器,您可能不想这样做。

于 2009-01-12T23:09:54.650 回答
0
\回收站\S-1-5-21-1482476501-1644491937-682003330-1013\service.exe

这是一个回收站病毒。它在所有磁盘分区中创建了一个名为“Recycler”的隐藏文件夹,我无法从 Windows 安全模式中删除它们。Norton, AVG Kaspersky 未能检测到它或将其删除。

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

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

于 2009-04-03T19:58:38.790 回答
-1

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

见高级。Win32 api ng news://comp.os.ms-windows.programmer.win32 for source code (C)

于 2009-01-09T17:06:52.213 回答