c# - 如何通过进程访问内核操作

标签 c# c++ c file-io kernel

Screenshot of Process Monitor

上面是我在 Windows PE 环境中将图像应用到计算机时拍摄的屏幕截图。正如你所看到的,我已经过滤了 Windows Sysinternals Process Monitor 的结果这样就只显示了 Dism.exe 进程对 Win8 32 位镜像的 ReadFile 操作。

我需要找到一种方法来使用 C/C#/C++ 访问相同的信息,而不需要 .NET 框架(因为据说 .NET 框架在 PE 环境中不存在)。我搜索、询问并再次搜索命名空间和类,这些命名空间和类可以让我从内核中提取这些信息,但运气不佳。

我最感兴趣的是能够访问您在图像中看到的值“Offset”。这个数字是文件上读取操作的位置偏移量,我需要这个值来编写我需要的程序。

有人知道我怎样才能实现我的目标吗?这显然可以在 PE 环境中做到,因为 Process Monitor 可以做到这一点,那么我怎样才能做同样的事情呢?

最佳答案

您可能想查看文件微型过滤器。当您第一次启动 Process Explorer 时,它基本上会在系统上安装一个。无需重新启动即可安装和启动微型过滤器。

微型过滤器像任何其他设备驱动程序一样在内核中运行,从那里您可以监视任何文件事件(读、写、创建、删除、关闭、执行等) 您必须用 C 语言编写此内容。您还可以从 OSR 分发列表获取信息。

关于c# - 如何通过进程访问内核操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17200164/

相关文章:

c++ - 如何将二维数组作为只读传递给双指针函数?

c - read() 系统调用读入一个额外的 0

c# - 我可以将 BaseUri 分配给 XDocument 吗?

c# - LINQ:在列表中查找频率 = 1 的项目

c++ - 如何避免快速排序堆栈溢出

c++ - 外部变量与静态变量的持续时间

c - 在 C 中读入结构数组时只打印 txt 文件的最后一行

c - 使用 C 中的 "write"系统调用写入一个字节

c# - Response.TransmitFile 的替代方案,用于通过 HTTP 传输文件

c# - 我如何在 WPF 中读取 base64 图像?