[英]How to detect file copy over local network with C#?
我必须使用.NET Framework创建一个简单的应用程序,该应用程序可以检测远程用户何时从运行该应用程序的计算机复制某些文件。
例如。
在机器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.