C#:在计算机中创建虚拟驱动器

Seb*_*son 33 .net c# virtualization storage virtual-drive

有没有办法在"(我的)计算机"中创建虚拟驱动器并操纵它,有点像JungleDisk吗?

它可能做的事情如下:

override OnRead(object sender, Event e) {
    ShowFilesFromAmazon();
}
Run Code Online (Sandbox Code Playgroud)

有没有API:s为此?也许写入XML文件或数据库,而不是真正的驱动器.


杜坎库似乎是大多与我的问题所对应的答案,即使System.IO.IsolatedStorage似乎是适应最规范,最微软环境.

Joe*_*csy 20

您可以使用Dokan库来创建虚拟驱动器.有一个.Net包装器用于与C#连接.

  • 我认为你混合的东西:LGPL与商业用途并不矛盾.您可以链接到dll(引用它),并且只有在您对Dokan dll本身进行更改时才必须释放源:但仅限修改后的Dokan库的来源!这不是**GPL**代码的情况,对于GPL,您必须释放**您的**整个申请的来源. (11认同)
  • Dokan 已经死了很长时间了,并且没有修复错误的希望。 (2认同)

Cod*_*der 13

根据您希望构建的虚拟驱动器类型,这里有一些最近在 Windows、macOS 和 iOS 中引入的新 OS API。

下面的一些 API 可用作 Windows 上的托管 .NET 代码,但许多是本机 Windows / macOS / iOS API。尽管如此,我还是能够在 .NET 和 Xamarin 应用程序中使用以下许多 API,并使用 C# 为 Windows、macOS 和 iOS 构建整个虚拟驱动器。

对于远程云存储

在 Windows 上。Windows 10 提供了云同步引擎 API,用于创建从远程位置发布数据的虚拟驱动器。它也被称为“云过滤器 API”名称或“Windows 云提供商”。以下是它的主要特点:

  • 按需文件夹列表。仅当客户端应用程序向文件系统发出第一次请求时,才会生成文件夹列表。文件内容不会被下载,但包括文件大小在内的所有文件属性都可以通过常规文件 API 在客户端上获得。
  • 按需加载文件内容。文件内容可以以多种模式下载(渐进式、流模式、允许后台下载等),并在应用程序发出第一个文件内容读取请求时提供给操作系统。
  • 离线文件支持。文件可以在离线模式下编辑、固定/取消固定和同步到/从服务器。
  • Windows 外壳集成。Windows 文件管理器显示文件状态(已修改、同步、冲突)和文件下载进度。
  • 元数据和属性支持。自定义列可以显示在 Windows 文件管理器中,并且一些二进制元数据可以与每个文件和文件夹相关联。

在 macOS 和 iOS 上。MacOS Big Sur 和 iOS 11+ 提供了类似的 API,称为File Provider API。它的功能类似于 Windows API 提供的功能:

  • 按需文件夹列表。
  • 按需文件内容加载。
  • 离线文件支持。
  • 文件管理器集成。在 macOS Finder 和 iOS 文件应用程序中,您可以显示文件状态(在云中、本地)。

我目前不确定文件/文件夹是否可以在 macOS Finder 中显示自定义列并存储任何元数据。

用于高速本地存储

在 Windows 上。Windows 提供ProjFS API。它与 Cloud Sync Engine API 和 macOS/iOS File Provider API 的主要区别在于它隐藏了它是远程存储的事实。它不提供文件状态、下载进度等的任何指示。文档说它旨在以文件系统的形式“投影”分层数据。


Chr*_*ham 6

是的,使用System.IO.IsolatedStorage中的类

  • 我不明白IsloatedStorage如何添加`OnRead`事件并执行`ShowFilesFromAmazon()`?你能举个例子吗?谢谢! (2认同)