如何在Windows资源管理器中创建一个文件夹激活外部应用程序?

时间:2008-11-28 17:23:05

标签: .net file-monitoring

我需要创建一个应用程序,当用户将文件复制到特定文件夹时,我的应用程序将被激活并且文件将被更改,当用户回读文件夹中的任何文件时,更改也将是发给文件。

有可能吗?

我会为此使用.net。

我认为文件夹C:\ WINDOWS \ assembly在某种程度上是这样的?

任何帮助将不胜感激! 谢谢!

4 个答案:

答案 0 :(得分:2)

好吧,我确信你可以编写一个可以做到这一点的资源管理器扩展,但我知道的更典型的方法是使用FileSystemWatcher类编写一个监视相关目录的Windows服务来监视事件。 然后,该服务可以执行请求的操作(或生成可执行文件)。

我注意到的一个警告是,如果一次发生大量活动,有时文件观察者可能会错过事件(截至.net 2.0 - 尚未检查3.5)。

如果您使用该方法,请确保在收到更改通知时自行检查目录内容,而不是依赖filewatcher告诉您的内容。我最终将filewatcher事件处理与不常见的民意调查结合起来,以确保我没有错过任何内容。

答案 1 :(得分:1)

您可以检测用户将文件复制到使用FileSystemWatcher的服务的文件夹中。当应用程序读取文件时更改文件的内容需要修补操作系统的病毒技术。像rootkit或文件系统筛选器驱动程序。不是我建议考虑的东西,在写完文件后改变它。

c:\ windows \ assembly包含GAC。 .NET安装一个shell扩展处理程序,用于隐藏文件夹的内容。该文件夹在其他方面非常容易访问,只有在使用Windows资源管理器查看该文件夹时,shell扩展处理程序才有效。用Microsoft强烈建议不要使用.NET编写shell扩展处理程序,该框架也完全缺乏支持。

答案 2 :(得分:0)

您可以使用FileSystemWatcher监控更改。

  

您可以将组件配置为   观看整个目录和   其内容或特定文件或集合   给定目录中的文件。该   FileSystemWatcher组件引发了一个   每当一个文件或子目录时发生事件   在指定的根目录下是   创建,删除,重命名或更改   以某种其他方式。的类型   组件监视的更改   包括文件中的更改或   子目录的属性,大小,最后   写入时间,上次访问时间和   安全设置。

答案 3 :(得分:0)

你将获得的最接近的内容是.net是FileSystemWatcher类,它将监视更改(创建和编写),但不会监视读取活动。

网上和MSDN上有很多样本

http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx