C# 记录 SMB 文件访问
Posted
技术标签:
【中文标题】C# 记录 SMB 文件访问【英文标题】:C# Log SMB file access 【发布时间】:2018-01-03 13:43:15 【问题描述】:我正在尝试创建一个通过 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º 编辑
明确目的。我正在建立一个DLP application (Data Loss Prevention)。我需要监视和记录通过 Windows 共享(用户、文件名)访问的文件,并最终在用户请求文件时阻止此访问。
【问题讨论】:
您可以查看 NET 系列命令 -net files
- 给出了 list of open files。 net session
给the list of sessions。
Great Subbu,我现在正在查看文档,寻找基于事件的内容,因此可以通知我而不是连续运行命令。
【参考方案1】:
诚然,这是部分答案。虽然它可能很有用,但它不适合评论。
看来你可以试试Win32_ConnectionShare
和Win32_ServerConnection
。
例如使用here。
不过,我不确定您是否可以使用它来捕获事件。 结合您的所有要求是一项挑战(这就是您设置赏金的原因!)
相关信息:
https://www.codeproject.com/Articles/17803/A-PC-Audit-Application-in-C
Detect File Read in C#
Is it possible to programatically log access to a windows share (SMB share) using the .Net framework?
https://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher(v=vs.110).aspx
SACL on Services using C# || get a handle to a service that has the ACCESS_SYSTEM_SECURITY rights using C#
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://superuser.com/questions/783950/how-to-display-currently-connected-users-workstations-to-a-windows-smb-share
https://***.com/a/154758/2707864
https://msdn.microsoft.com/en-us/library/windows/desktop/aa365433(v=vs.85).aspx
https://msdn.microsoft.com/en-us/library/bb726966.aspx
【讨论】:
嗨@sancho.s,谢谢回复。我在发帖之前已经看到了这个功能。这是列表中的第一个相关问题。虽然它接近我需要的东西,但它不是事件驱动的,并且不允许我取消读取请求。可以发个例子吗? @ViniciusGonçalves - 你是对的。请查看更新的答案。以上是关于C# 记录 SMB 文件访问的主要内容,如果未能解决你的问题,请参考以下文章
.NET C# - 文本文件中的随机访问 - 没有简单的方法?
linux系统smb安装,windows访问smb共享文件夹和虚拟机vm与真机的互ping
linux无法访问windows samba 提示: Firefox 不知道如何打开此地址,因为协议 (smb) 未和任何程序关联。