Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何获取已删除文件的用户?_C#_Filesystems - Fatal编程技术网

C# 如何获取已删除文件的用户?

C# 如何获取已删除文件的用户?,c#,filesystems,C#,Filesystems,我需要知道哪个用户从c代码中删除了文件系统中的文件。 只有一个想法是使用审计,但它似乎非常慢…您可以使用事件捕获文件系统上发生的删除 根据应用程序的不同,此时您可能还能够找出是什么用户导致了此事件的发生(它不是事件的一部分)。我不知道是否可以从系统中检索此事件,但一种可能的方法是使用av FileSystemWatcher对象在删除时触发事件。缺点是您需要一直运行watcher应用程序。一个好处是,如果可行的话,您可以只监视一个特定的文件夹。事实上。我使用的是watcher,但当我尝试像这样获取

我需要知道哪个用户从c代码中删除了文件系统中的文件。 只有一个想法是使用审计,但它似乎非常慢…

您可以使用事件捕获文件系统上发生的删除


根据应用程序的不同,此时您可能还能够找出是什么用户导致了此事件的发生(它不是事件的一部分)。

我不知道是否可以从系统中检索此事件,但一种可能的方法是使用av FileSystemWatcher对象在删除时触发事件。缺点是您需要一直运行watcher应用程序。一个好处是,如果可行的话,您可以只监视一个特定的文件夹。

事实上。我使用的是watcher,但当我尝试像这样获取用户名时:System.Security.AccessControl.FileSecurity sec=newfilesecurity(路径,System.Security.AccessControl.AccessControlSections.Owner);返回sec.GetOwner(typeof(System.Security.Principal.NTAccount))值;由于无法确定,它会引发异常user@user:尝试
WindowsIdentity.GetCurrent().Name
您所说的“审计”是什么?@BlueMonkMN:可能是:NTFS访问审计-;这似乎是最简单的选择——毕竟,它更接近内核,而不是用户空间,因此它应该捕获所有文件访问事件(不确定低级磁盘访问,但这里可能不需要)。不过我没有微调的经验。我不想使用审计,因为我会有很多文件,而且会对系统日志产生垃圾邮件。FileSystemWatcher似乎没有提供有关删除文件的用户的信息……没有,但我认为可能可以通过该文件访问该文件。您必须获取更改文件的用户,而不是所有者。但无论如何,该文件可能已被删除。我想这就是为什么会出现异常。也许你可以从源代码中找到如何访问已删除文件的文件信息?