2015-06-27 37 views
0

我必須用.NET Framework創建一個簡單的應用程序,該應用程序可以檢測遠程用戶何時從應用程序將運行的計算機上覆制某個文件。如何使用C#檢測本地網絡上的文件副本?

例如,

  • MACHINE1(該應用程序將在這裏運行)
  • 機器2

用戶在機器2訪問的MACHINE1和一些文件複製到一些共享目錄Machine2目錄。

我需要記錄複製的文件名和請求複製的IP/DNS。

是否有一些Windows消息來做到這一點?

甚至任何IO類?

一個要求是我必須通過自定義應用程序來做到這一點。

+0

看看[FileSystemWatcher](http://www.codeproject.com/Articles/26528/C-Application-to-Watch-a-File-or-Directory-using-F)。 –

+0

Hello @Riciculated Spline! 我知道這個班的一些東西,但我看到它沒有檢測到有人複製文件,例如:Ctrl + C從遠程機器 –

回答

1

如果一個文件被訪問過,沒有消息或暴露的API會告訴你什麼時候發生,你無法從C#程序中檢測到。您需要在操作系統中降低級別。這樣做的正常方法是您設置窗口本身以通過組策略執行監視Computer Configuration\Windows Settings\Security Settings\Advanced Audit Policy Configuration\Audit Policies\,然後啓用Object Access: File Share

這將創建類似下面的

 
Log Name:  Security 
Source:  Microsoft-Windows-Security-Auditing 
Date:   8/14/2013 2:08:25 AM 
Event ID:  5145 
Task Category: Detailed File Share 
Level:   Information 
Keywords:  Audit Success 
User:   N/A 
Computer:  RootMS01.Reskit.com 
Description: 
A network share object was checked to see whether client can be granted desired access. 
Subject: 
     Security ID:   RESKIT\Administrator 
     Account Name:   Administrator 
     Account Domain:    RESKIT 
     Logon ID:    0x49199 
Network Information:  
     Object Type:   File 
     Source Address:    10.10.10.11 
     Source Port:   61361 
Share Information: 
     Share Name:   \\*\Shares 
     Share Path:   \??\C:\Shares 
     Relative Target Name: UserHomeFolder\LSkywalker\Projects.txt 
Access Request Information: 
     Access Mask:   0x120089 
     Accesses:    READ_CONTROL 
           SYNCHRONIZE 
           ReadData (or ListDirectory) 
           ReadEA 
           ReadAttributes 
Access Check Results: 
     READ_CONTROL: Granted by Ownership 
           SYNCHRONIZE: Granted by  D:(A;;FA;;;WD) 
           ReadData (or ListDirectory): Granted by  D:(A;;FA;;;WD) 
           ReadEA: Granted by  D:(A;;FA;;;WD) 

你可以看到,被訪問和機器的IP訪問它是記錄在文件中的審計日誌條目,所有你需要做的是寫一個C#程序reads the log並提取您需要的信息。

Here is a detailed technet article解釋如何設置它。

+0

您好斯科特,Tks回覆。 我可以在裝有Windows 7的電腦上執行此任務嗎? –

+1

是的,審計策略並不特定於服務器版本的Windows。 –

+0

它不適用於Windows 8/8.1 :(僅適用於專業版/企業版) –