【问题标题】:Send File Programmability in C#在 C# 中发送文件可编程性
【发布时间】:2013-07-22 23:58:44
【问题描述】:

您将如何检测、阻止或只是泛指您可以对 Windows 上的任何文件/文件夹执行的发送文件操作。当发送文件发生时到底发生了什么,.NET 中是否有任何内置的可编程性,或者它类似于移动的工作方式(它首先被删除,然后在新位置创建。)

我只想知道是否有任何方法可以检测发送文件何时发生,或者当执行发送文件时 windows 对文件/文件夹做了什么。

【问题讨论】:

  • 你不会在注册表中检查“发送文件”的处理程序吗?
  • “它先被删除,然后在新位置创建”。我真的希望任何移动程序都不会这样做。停电会发生什么?
  • 我基本上试着回答你的问题.. 但我认为你需要更具体地了解你想要完成的真正答案
  • 您说的是在资源管理器中右键单击文件/文件夹时出现的菜单?
  • 所以我想简单地说一下我想要完成的事情:我试图阻止发送到路径/文件夹等

标签: c# .net windows filesystems sendfile


【解决方案1】:

如果您说的是右键单击文件/文件夹时的“发送到”上下文菜单,那是外壳扩展处理程序的结果。很确定现在有办法拦截这些: 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 接收事件的速度存在限制,这意味着如果您观看太多错过活动。如果您绝对必须看到文件移动,另一种选择是挂接到更改日志中,但这真的很难看。

【讨论】:

  • 是不是我没办法处理了?如何阻止发送到可移动设备或驱动器的一部分?
  • @JBeck 您只是想阻止发送到,还是阻止他们使用所有复制到所述位置的方法?
  • 我想阻止发送到
  • 我认为不可能阻止发送到。如果您可以阻止所有访问,您可以使用 ACL 来做到这一点。
【解决方案2】:

如果您想阻止某人移动或复制文件,则必须更改其读取权限和/或修改权限以排除该用户。

有一个FileSystemWatcher class 可以帮助您检测文件系统的更改。此外,File Class 具有用于移动和其他文件操作的静态方法。您可以查看 System.IO 命名空间

当您移动文件时,它通常不会被重新创建和删除(如果它们位于同一设备上)。通常它的位置只是被修改了。 (因此即使在大文件上也几乎立即发生)

【讨论】:

  • ...仅当它们共享同一个驱动器时。
  • @spender 这就是我说“通常”的原因,但我可能应该更新一下以澄清
  • 我知道 FileSystemWatcher 类,我不关心现在的移动或 FileSystemWatcher 可用的任何其他订阅事件处理程序。我关心如何在任何文件/文件夹的上下文菜单中处理发送到。
猜你喜欢
  • 2018-10-19
  • 1970-01-01
  • 1970-01-01
  • 2011-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-29
  • 1970-01-01
相关资源
最近更新 更多