8

我有大量用于我正在处理的项目的文件夹。很长一段时间以来,我一直试图找到一种更好的方法来对它们进行排序,我想编写一个应用程序来根据我所说的任何标准创建组,例如“2011 年的文件夹”或“包含 ax 类型文件的文件夹” “ ETC。

这相当简单,并且在 winForms 或 WPF 或其他东西中使用自己的 UI 进行编码不会带来太大问题。但我认为如果我能让这些文件夹看起来是文件系统的一部分会好得多,这样其他应用程序(如现有的文件浏览器)可以看到它们。

这可能吗?会不会引起我没有考虑过的问题?如果可能的话,我该怎么做?

我想到的一种方法是让应用程序监视文件系统并在每次发生更改时创建文件夹快捷方式,但我很好奇是否有可能通过“网关”文件夹向资源管理器提供假文件系统

编辑:好吧,这显然是可能的,因为http://www.virtualfolder.net/可以做到,现在我认为TrueCrypt也可以,尽管如果它不必显示为单独的驱动器会很好。那么问题就变成了,我该如何实现呢?

4

3 回答 3

10

您可以创建一个Shell 命名空间扩展来收集您想要的文件信息,并以您希望的任何方式在 Windows 资源管理器中显示它。 您可以选择扩展的位置,无论是作为其自己的顶级节点、另一个系统虚拟文件夹/扩展的子节点,还是作为文件系统文件夹的子节点。

编写 SNE 并非易事,但它比编写低级文件系统驱动程序要容易得多,并且不需要特殊的面向驱动程序的编译器。任何支持开发 COM 对象的编译器都可以工作。

于 2012-12-18T19:02:14.827 回答
4

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

VirtualFolder 在创建驱动器号时使用文件系统驱动程序。

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

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

还有 Pismo File Mount 产品可用,它们使用过滤驱动技术。您可以与他们核对是否可以完成您的需求。

于 2012-12-18T16:58:27.930 回答
0

从我收集到的信息中,您正在寻找一种方法来呈现预定义文件查询的结果,以使它们看起来好像它们位于文件系统中的特定位置。如果这是正确的,您可能需要查看Hard Links and Junctions。您可以使用这些文件系统服务做什么是有限制的。然而,它真的很容易实施。

于 2012-12-20T21:46:08.877 回答