我正在尝试为通过 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 上看到此信息)
2º 编辑
明确目的。我正在 build 一个 DLP application (Data Loss Prevention) .我需要监控和记录通过 Windows 共享(用户、文件名)访问的文件,并最终在用户请求文件时阻止此访问。
最佳答案
不可否认,这是一个部分答案。虽然它可能有用,但不适合作为评论。
看来你可以试试 Win32_ConnectionShare
和 Win32_ServerConnection
.
它用于here ,例如。
不过,我不确定您是否可以使用它来捕获事件。 结合您的所有要求具有挑战性(这就是您设置赏金的原因!)
相关信息:
https://www.codeproject.com/Articles/17803/A-PC-Audit-Application-in-C
https://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher(v=vs.110).aspx
https://www.netfort.com/blog/auditing-file-access-on-file-servers/
https://blogs.technet.microsoft.com/mspfe/2013/08/26/auditing-file-access-on-file-servers/
https://stackoverflow.com/a/154758/2707864
https://msdn.microsoft.com/en-us/library/windows/desktop/aa365433(v=vs.85).aspx
关于C# 记录 SMB 文件访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45357370/