繁体   English   中英

如何使用C#在本地网络上检测文件复制?

[英]How to detect file copy over local network with C#?

我必须使用.NET Framework创建一个简单的应用程序,该应用程序可以检测远程用户何时从运行该应用程序的计算机复制某些文件。

例如。

  • Machine1 (应用程序将在此处运行)
  • 机器2

机器2的用户在MACHINE1和复印件访问共享目录中的一些文件,有些机器2目录。

我需要记录复制的文件名和请求复制的IP / DNS。

有一些Windows消息可以做到吗?

甚至没有IO类?

要求是我必须通过自定义应用程序执行此操作。

您无法从C#程序中检测是否已访问文件,没有消息或公开的API会告诉您何时发生文件。 您需要在操作系统中上一个较低的级别。 通常的做法是将Windows本身设置为通过“ 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#程序, 程序读取日志并提取所需的信息。

这是一篇详细的technet文章,解释了如何进行设置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM