2012-12-18 44 views
7

我对正在处理的项目有很大的文件夹集合。我一直在努力寻找一种更好的方法来排序它们很长一段时间,我想编写一个应用程序,根据我说的任何标准创建组,例如“2011年的文件夹”或“包含文件的ax类型的文件夹“等创建虚拟文件夹并将它们挂接到文件系统

这是相当直接的,并不会出现太多的代码在WinForms或WPF中使用自己的用户界面的问题。但是我认为如果我可以让这些文件夹看起来是文件系统的一部分,会更好,所以其他应用程序(如现有的文件探索器)可以看到它们。

这可能吗?它会导致我没有考虑过的问题吗?如果可能,我该如何去做?

我认为这样做的一种方式是让应用程序监控文件系统,并在每次发生更改时创建文件夹快捷方式,但我很好奇它是否可能通过'网关”文件夹

编辑:好这显然是可能的,因为http://www.virtualfolder.net/可以做到这一点,而现在,我认为它这样可以TrueCrypt的,但如果它没有显示为一个单独的这将是很好驾驶。所以问题就变成了,我该如何执行它?

+0

Windows 7内置了该功能 –

回答

4

这是使用文件系统驱动程序或文件系统过滤器驱动程序完成的。首先让您创建一个虚拟文件系统并将其挂载到一个驱动器盘符上,并将其挂载到NTFS驱动器上的一个文件夹(该文件夹必须存在,但其内容被虚拟文件系统目录树“替换”)。文件系统过滤器驱动程序可让您在现有文件夹中引入虚拟文件和文件夹而不必替换它

VirtualFolder使用文件系统驱动程序,因为它创建一个驱动器号。

这两种类型的驱动程序都是用C编写的,并且工作在内核模式下。编写它们需要深入的Windows内部知识和驱动程序开发经验(因为文件系统驱动程序是最复杂的驱动程序类型之一)。

我们提供多种与虚拟存储相关的产品。其中之一Callback File System是一个文件系统驱动程序。它会调用您的用户模式代码来执行实际的文件系统功能。另一种产品CallbackFilter是FS过滤器驱动程序(也称为用户模式代码)。但是,当前版本的CallbackFilter不允许您引入虚拟文件和文件夹(这将在下一版本中实现)。

还有Pismo File Mount产品,他们使用过滤器驱动技术。你可以检查他们是否可以完成你需要的东西。

9

您可以创建一个Shell Namespace Extension,收集您想要的文件信息,并以您希望的任何方式将其显示在Windows资源管理器中。 You can choose where您的扩展所在的位置,无论是作为其自己的顶级节点,还是另一个系统虚拟文件夹/扩展的子项,还是作为文件系统文件夹的子项。

编写一个SNE不是微不足道的,但是编写较低级别的文件系统驱动程序要简单得多,而且它不需要特殊的面向驱动程序的编译器。任何支持开发COM对象的编译器都可以工作。

0

从我收集的内容中,您正在寻找一种方法来呈现预定义文件查询的结果,使其看起来好像它们位于文件系统中的特定位置。如果这是正确的,你可能想看看Hard Links and Junctions。这些文件系统服务可以做什么是有限制的。然而,它的实施非常简单。

相关问题