C# 记录 SMB 文件访问

标签 c# winapi wmi instrumentation wql

我正在尝试为通过 SMB 传输的文件创建一个简单的日志。

这适用于 Windows 8 或更高版本:

var scope = new ManagementScope(@"\\.\root\Microsoft\Windows\SMB");

var query = new WqlEventQuery(

@"SELECT * 
  FROM 
      __InstanceOperationEvent WITHIN 1 
  WHERE 
      TargetInstance ISA 'MSFT_SmbOpenFile'"

);

ManagementEventWatcher watcher = new ManagementEventWatcher(scope, query);
watcher.EventArrived += new EventArrivedEventHandler(HandleEvent);

watcher.Start();

....

But it does not work for windows 7 or lower. (Run-time requirements)

是否有至少与 Windows 7 兼容的类似解决方案?

1º 编辑

这看起来是可能的,因为这个 Windows 7 模块完成了这个任务:

计算机管理(我在 Windows 7 上看到此信息)

mmc.exe

2º 编辑

明确目的。我正在 build 一个 DLP application (Data Loss Prevention) .我需要监控和记录通过 Windows 共享(用户、文件名)访问的文件,并最终在用户请求文件时阻止此访问。

最佳答案

关于C# 记录 SMB 文件访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45357370/

相关文章:

scripting - 在 IIS 应用程序池中获取工作进程

c# - 防止非 SELECT SQL 语句

C++从模块大小中的进程读取所有内存

c++ - 使用 C++ 在 Windows 中进行线程化

c# - 使用 Win32 库时,您更喜欢使用哪个 PE 查看器应用程序?

c# - 在 64 位操作系统上的进程内 wmi 提供程序(32 位)中加载 native dll(32 位)

powershell - Invoke-CimMethod 的无效(静态)方法

c# - 将 ArrayPool 对象提供给 JsonOutputFormatter 构造函数

c# - 显示按日期排序的数据

c# - 为什么协变和逆变不支持值类型