2017-07-27 107 views
5

我想通过SMB传输文件的简单日志。C#日志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º编辑

澄清目的。我正在建造一个DLP application (Data Loss Prevention)。我需要监视和记录通过Windows共享(用户,文件名)访问的文件,并最终在用户请求文件时阻止此访问。

+1

您可以查看NET系列命令 - “net files” - 给出[打开的文件列表](https://technet.microsoft.com/zh-cn/library/bb490702.aspx)。 'net session'给出[会话列表](https:// technet。microsoft.com/en-us/library/bb490711.aspx)。 – Subbu

+0

伟大的Subbu,我现在正在查看文档,寻找基于事件的事件,所以我可以被通知而不是连续运行命令。 –

回答

0
+0

Hi @ sancho.s,tks for reply。我在发布之前看过这个功能。这是列表中的第一个相关问题。虽然它接近我需要的东西,但它不是事件驱动的,并且不允许我取消读取请求。你能举个例子吗? –

+0

@ViniciusGonçalves - 你说得对。请参阅最新的答案。 –