2017-07-27 100 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 - 你說得對。請參閱最新的答案。 –