为Windows编写用户模式文件系统?

esa*_*sac 8 c# filesystems

是否可以在纯用户模式下为Windows编写文件系统,或者更具体地说是在托管代码中?我在考虑与GMAILFS非常相似的东西.排除它在幕后做的事情(GMAIL,亚马逊等),主要目标是提供驱动器号并支持所有基本文件操作,甚至可能添加我自己的结构来存储元数据等.

And*_*y Y 10

Windows 提供了多种方法来构建用于不同目的的用户模式文件系统,具体取决于您的存储位置和您需要支持的功能。其中两个,Projected File System API 和 Cloud Files API 最近作为 Windows 10 更新的一部分提供。

Windows 投影文件系统 API

投影文件系统 API旨在以文件系统的形式表示一些分层数据,例如 Windows 注册表。与 Cloud Files(见下文)不同,它不提供有关文件状态的任何信息,并隐藏了这不是“真实”文件系统的事实。例子

Windows 云同步引擎 API

云同步引擎 API(云文件 API、云过滤 API)在 Windows 10 上的 OneDrive 中使用。它在第一次请求期间提供文件夹内容加载、多种不同模式下的按需文件内容加载以及脱机文件支持。它直接集成到 Windows 文件管理器和 Windows 通知中心,并提供文件状态(脱机、同步、冲突、固定)和文件内容传输进度。Cloud Files API 在常规用户权限下运行,不需要管理员权限来安装文件系统或任何 API 调用。例子

Windows Shell 命名空间扩展 API

虽然Shell Namespace Extension不是真正的文件系统,但在许多情况下,您将使用它来扩展 Projected File System 和 Cloud Files API 的功能。例如,您可以将自定义命令添加到 Windows 文件管理器的上下文菜单中,并且您可以创建看起来和行为类似于真实文件系统的节点(同样,应用程序将无法读取或写入此类节点,这只是一个用户界面)。Cloud Files API 使用命名空间扩展在 Windows 文件管理器的顶层显示您的同步根。


Jon*_*way 6

它很难.我会看一些为你做过一些艰苦工作的项目,比如Dokan.

  • @ user424257 LGPL允许在商业项目中使用(事实上GPL也是如此).但是,Dokan有自己的缺点,例如巨大的漏洞和缺乏支持和维护. (5认同)
  • 据我所知,Dokan需要安装为内核模式驱动程序(Dokan.sys),并且只有在此之后才能实现自己的用户模式代码(可选地在.Net中)分层顶部... (3认同)
  • 在商业项目中无法使用Dokan,它是根据LGPL许可.我建议使用WebDAV服务器库(如http://www.webdavsystem.com/server/)+内置Windows/Mac OS X驱动器安装功能.可能这是实现结果的最快方法,在这种情况下您的服务器将符合标准. (2认同)