簡體   English   中英

C#:在計算機中創建一個虛擬驅動器

[英]C#: Create a virtual drive in Computer

有沒有辦法在“(我的)電腦”中創建一個虛擬驅動器並對其進行操作,就像 JungleDisk 那樣?

它可能會執行以下操作:

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

是否有任何 API:s 用於此? 也許寫入 XML 文件或數據庫,而不是真正的驅動器。


Dokan 庫似乎是最符合我的問題的答案,盡管System.IO.IsolatedStorage似乎是最標准化和最適應 Microsoft 環境的。

根據您希望構建的虛擬驅動器類型,這里有一些最近在 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 的主要區別在於它隱藏了它是遠程存儲的事實。 它不提供文件狀態、下載進度等的任何指示。 文檔說它旨在以文件系統的形式“投影”分層數據。

您可以使用Dokan 庫來創建虛擬驅動器。 有一個用於與 C# 交互的 .Net 包裝器。

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

我的電腦的內容可以包括 Shell 命名空間擴展。 這些 COM 對象在主 Explorer 進程內運行,許多其他 shell 擴展也是如此。 將 C# 用於此類擴展是一個壞主意,因為您的擴展無法控制 Explorer.exe 可以使用哪個 CLR 版本。 並且 Microsoft 只允許每個進程使用一個 CLR。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM