【发布时间】:2017-06-07 18:40:23
【问题描述】:
我的睡眠磁盘时不时地醒来,执行听起来像是单次读取的操作,然后一直处于空闲状态,直到它再次进入睡眠状态。有时我正在使用的程序在磁盘旋转时完全冻结大约 10 秒钟,即使该程序似乎不需要从该驱动器读取。
是否有用于在文件访问发生时监听文件访问或类似情况的 api,以便我可以弄清楚从该驱动器读取的内容,以便我可以移动它?如果不在 Windows 上,我可以在 Linux 上执行此操作吗?
这也适用于确定程序一般访问的文件/文件夹,所以我不会说它只适用于我非常狭窄的问题。
【问题讨论】:
-
“如果不在 Windows 上,我可以在 Linux 上执行此操作吗?” - 这需要澄清一下。您如何建议外国操作系统有助于诊断 Windows 内部?
-
啊,我在想,因为许多程序和编程语言都可以在 Windows 和 Linux 上运行,所以在 Linux 上运行相同的程序可以让我知道它访问了哪些文件和文件夹。在 Windows 上找到这些相同的文件夹将是一项相当容易的任务,因为文件夹结构可能相似。
-
编程语言的抽象层是语言运行时(例如 .NET CLR、CRT 等)。操作系统之间的实现差异很大,在不同系统上运行“相同”的应用程序具有完全不同的运行时特性。这不是一条有前途的路线。相反,请运行 Process Monitor 之类的工具来查看所有文件系统活动。
-
虽然这个其他问题是特定于 C# 的,但我相信它本质上是重复的,因为答案是相同的:没有 API 可以从用户模式程序中捕获所有可能的访问.您必须编写文件系统驱动程序,这就是 Process Monitor 等工具完成工作的方式。 stackoverflow.com/questions/11417658/…
标签: windows monitoring file-monitoring filesystem-access