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

问题描述 投票:0回答:4

有没有办法在“(我的)电脑”中创建虚拟驱动器并对其进行操作,有点像 JungleDisk 那样?

它可能会做类似的事情:

override OnRead(object sender, Event e) {
    ShowFilesFromAmazon();
}

有这方面的API吗?也许写入 XML 文件或数据库,而不是真正的驱动器。


The Dokan Library 似乎是最符合我的问题的答案,尽管 System.IO.IsolatedStorage 似乎是最标准化且最适合 Microsoft 环境的。

c# .net virtualization storage virtual-drive
4个回答
18
投票

根据您想要构建的虚拟驱动器类型,以下是最近在 Windows、macOS 和 iOS 中引入的一些新操作系统 API。

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

用于远程云存储

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

  • 按需文件夹列表。仅当客户端应用程序首次向文件系统发出请求时才会列出文件夹列表。文件内容不会被下载,但所有文件属性(包括文件大小)都可以通过常规文件 API 在客户端上获得。
  • 按需加载文件内容。文件内容可以多种模式下载(渐进式、流式传输模式、允许后台下载等),并在应用程序发出第一个文件内容读取请求时可供操作系统使用。
  • 离线文件支持。文件可以在离线模式下编辑、固定/取消固定以及与服务器同步。
  • Windows shell 集成。 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 的主要区别在于它隐藏了它是远程存储的事实。它不提供任何文件状态、下载进度等指示。文档称它旨在以文件系统的形式“投影”分层数据。


7
投票

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


2
投票

是的,使用 System.IO.IsolatedStorage

中的类

2
投票

“我的电脑”的内容可以包含 Shell 命名空间扩展。这些 COM 对象在主 Explorer 进程内运行,许多其他 shell 扩展也是如此。对此类扩展使用 C# 是一个坏主意,因为您的扩展无法控制 Explorer.exe 可以使用哪个 CLR 版本。 Microsoft 只允许每个进程使用一个 CLR。

© www.soinside.com 2019 - 2024. All rights reserved.