【问题标题】:C#: take control over file transfers*C#:控制文件传输*
【发布时间】:2011-05-07 04:33:54
【问题描述】:

我想要一个在后台运行的程序,监听任何文件传输,然后取消资源管理器的文件传输机制,并启动它自己的。

我该怎么做?有一些我可以调用的 dll 吗?

为什么?

  • 过滤某些类型的文件。 (自动或有提示。)
  • “拒绝所有”重复传输选项。
  • 记录。
  • 不必每次我想传输文件时都启动程序。
  • 进一步了解幕后情况。
  • 不依赖第三方程序。
  • 我将来想到的任何其他功能。

* 文件传输是指通过拖放移动/复制文件/文件夹,但我只关心从磁盘到磁盘的文件传输,而不是从互联网传输。

【问题讨论】:

  • Shift+No 通常与 No To All 相同,您知道 ;)
  • 您是指 Internet Explorer 还是 Windows Explorer?
  • @minitech:太好了,谢谢。 @Robert Harvey:Windows 资源管理器。
  • @Robert:我认为这应该是一个答案,而不是评论

标签: c# pinvoke windows-explorer file-transfer


【解决方案1】:

定义“文件传输”。

您想嗅探 ftp、http 请求吗?探索者副本也一样?仅限本地还是在网络上?

我认为这一定会变得脆弱。如果资源管理器让您通过shell extension 连接到文件复制操作,您最好的选择是。不知道能不能搞定。

请参阅The Complete Idiot's Guide to Writing Shell Extensions 了解起点。

另见http://msdn.microsoft.com/en-us/library/cc144063(v=vs.85).aspx

【讨论】:

  • 谢谢罗伯特,你很优雅
  • 您能否详细说明您所说的“它一定会变脆”或为什么“这会变得很糟糕”?
  • 您正在尝试修改操作系统。仅当操作系统旨在让您这样做时,这才有效。最接近你的方法是挂钩 Explorer;一般来说,这仍然不会让你control over file transfers,因为会有不会触发钩子的转移。此外,在某些边界情况下,钩子无法执行您想要的操作或严重干扰其他软件(例如,当您的病毒扫描程序想要隔离文件时,您不希望触发钩子)。 简而言之:如果这是安全关键部分,请不要这样做。方便吗,选择ICopyHook 选项
【解决方案2】:

在我开始之前:这会很糟糕,但是:

对于 Vista/7:

你需要 Hook (Hooking)

IFileOperationCoCreateInstance,然后从那里更改您需要的内容。

然而,这在 XP 上不起作用,而且可能非常脆弱,可以在某些 PC 上运行,而在其他 PC 上不起作用,因为从 API 的角度来看,有数百万种方法可以在 Windows 上做同样的事情。

【讨论】:

  • +1 听到听到。这是我连续第二天看到你的回答具有预言性true 质量 - 但我无法证明它(see here for the other one
  • 你知道我实际上编写了那个东西吗?我有它在工作,最复杂的部分是在图中的插入上创建递归。我认为某处仍然存在错误。星期一,如果我不忘记,我会在那里发布。
  • 我更喜欢摆弄算法而不是正确编码,只是为了证明我的假设正确的乐趣。就像这两个小时的时间浪费在这里*.com/questions/5909031/…
最近更新 更多