您将如何检测、阻止或只是泛指您可以对 Windows 上的任何文件/文件夹执行的发送文件操作。当发送文件发生时究竟发生了什么,.NET 中是否有任何内置的可编程性,或者它是否类似于移动的工作方式(它首先被删除,然后在新位置创建。)
我只想知道是否有任何方法可以检测发送文件何时发生或执行发送文件时窗口对文件/文件夹做了什么。
您将如何检测、阻止或只是泛指您可以对 Windows 上的任何文件/文件夹执行的发送文件操作。当发送文件发生时究竟发生了什么,.NET 中是否有任何内置的可编程性,或者它是否类似于移动的工作方式(它首先被删除,然后在新位置创建。)
我只想知道是否有任何方法可以检测发送文件何时发生或执行发送文件时窗口对文件/文件夹做了什么。
如果您在右键单击文件/文件夹时谈到“发送到”上下文菜单,那是外壳扩展处理程序的结果。很确定现在有办法拦截这些: Is there a Click Handler for Shell Extension
有关注册/创建自己的处理程序的 MS 文档如下:
http://msdn.microsoft.com/en-us/library/windows/desktop/cc144067%28v=vs.85%29.aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/cc144110%28v=vs.85%29.aspx
我假设如果您选择“发送到”并选择一个文件夹/驱动器,那么它将执行标准移动或复制(取决于它是否是同一个驱动器)。正如 Alan 所提到的,您可以使用 FileSystemWatcher 来尝试和监视特定的文件/目录,但要注意您正在观看的内容过于广泛,因为 FSW 接收事件的速度存在限制,这意味着如果您观看太多会错过活动。如果您绝对必须看到文件移动,另一种选择是挂接到更改日志中,但这真的很难看。
如果您想阻止某人移动或复制文件,则必须更改其读取和/或修改权限以排除该用户。
有一个FileSystemWatcher 类可以帮助您检测文件系统的更改。此外,文件类具有用于移动和其他文件操作的静态方法。您可以查看 System.IO 命名空间
移动文件时,通常不会重新创建和删除它(如果它们在同一设备上)。通常它的位置只是被修改了。(因此即使在大文件上也几乎立即发生)