C# 在文件资源管理器中检测并记录复制/粘贴/删除/剪切操作

C# 在文件资源管理器中检测并记录复制/粘贴/删除/剪切操作,c#,.net,explorer,C#,.net,Explorer,我想检测并记录文件资源管理器操作,如复制/剪切/删除/粘贴 我已经读过,但我也注意到它有一些问题,因为没有复制/剪切事件,这可能会与我想做的事情混淆 操作系统和FileSystemWatcher对象将剪切粘贴操作或移动操作解释为文件夹及其内容的重命名操作。如果将包含文件的文件夹剪切并粘贴到正在监视的文件夹中,则FileSystemWatcher对象仅将该文件夹报告为新文件夹,而不将其内容报告为新文件夹,因为它们实际上只是重命名的文件夹 FileSystemWatcher正在将创建文件和删除文件事

我想检测并记录文件资源管理器操作,如复制/剪切/删除/粘贴

我已经读过,但我也注意到它有一些问题,因为没有复制/剪切事件,这可能会与我想做的事情混淆

操作系统和FileSystemWatcher对象将剪切粘贴操作或移动操作解释为文件夹及其内容的重命名操作。如果将包含文件的文件夹剪切并粘贴到正在监视的文件夹中,则FileSystemWatcher对象仅将该文件夹报告为新文件夹,而不将其内容报告为新文件夹,因为它们实际上只是重命名的文件夹

FileSystemWatcher
正在将创建文件和删除文件事件与已更改和重命名的事件挂钩,这实际上无法帮助我确定它是由用户还是其他进程创建的。此外,我无法100%确定文件是被复制还是被剪切等

我还需要跟踪“from/to”的位置和文件名


除了
FileSystemWatcher
之外,是否有其他方法可以区分这些操作?

我认为
FileSystemWatcher
在这种情况下很有用。您可以使用
Changed
事件,该事件发生在文件或目录发生更改时,就像复制/粘贴操作一样

有关此事件以及类本身,请参见。请注意,您还可以将其他事件用于删除/剪切操作


事件使用
FileSystemEventArgs
,其中包含MSDN示例中
FullPath
Name

的属性。他们希望我指定观察者应该观察的目录,如何使其成为全局的?对于每个目录中的每个事件?如果希望它是整个磁盘的全局目录,可以将目录设置为C:\或根目录中的任何内容。然后在您创建的FileSystemWatcher对象上,将IncludeSubdirectories属性设置为true,这将监视所有子目录。我确实在努力使其工作:),我希望onChange事件能够真正工作。感谢监视整个C:\驱动器(或操作系统硬盘)可能会由于操作系统文件操作引发大量事件。所以,这应该是一个值得考虑的问题。我终于做到了:“是的,我认为我每秒钟触发一个毫秒事件是由操作系统完成的,而不是由用户完成的:(但我对用户操作感兴趣,我能以某种方式过滤这个问题吗?这个问题。