簡體   English   中英

將Google Drive映射到Network Drive或Local Drive

[英]Map Google Drive to Network Drive or Local Drive

我嘗試使用C#和Google Drive API連接到我的Google Drive,然后將其映射為網絡或本地驅動器。 我知道還有其他類似NetDrive的程序 (它非常有用且健壯),但我希望自己創建一些東西。 我已經在開發人員控制台中創建了一個項目,並且能夠使用我的應用程序連接到雲端硬盤並執行各種讀取和上傳操作,因此我知道特定的部分是可以的。 訪問和權限似乎都已設置。 我只是不知道在Windows中將該存儲映射為可用驅動器時從哪里開始。 任何建議將是最有幫助的,非常感謝!

有兩個用於實現NetDrive / WebDrive類型解決方案的基本組件。 您正在尋找的是可安裝文件系統和網絡提供程序的創建。

網絡提供商(NP)是處理網絡層(包括驅動器號的映射和取消映射)以及許多其他相當復雜的UNC /網絡內容的用戶模式組件。 要了解您的用途,請查看Win32 WNET *()API。 您將需要實現所有專門用於IFS和“網絡”的WNet()調用。

完成后,您可能將能夠在DOS中執行“ net use \\ MyWebDrive \\”並在Windows資源管理器中執行“映射網絡驅動器”。 您也許還可以使用Windows資源管理器枚舉遠程文件系統的內容。

但是,現在您需要確保所有第三方應用程序都可以訪問您的網絡驅動器...為此,您需要實現Win32 File System API,例如CreateFile,Read(),Write(),CloseHandle() ,FindFirst()等。

為此,您可以編寫一個可安裝文件系統驅動程序FSD,以處理來自希望讀取/寫入該映射的網絡驅動器上的文件的用戶模式應用程序的所有I / O調用。 這很可能是內核模式應用程序……經過簽名/認證的文件系統設備驅動程序……可能是用老式的C語言編寫的,甚至可能取決於您要如何執行網絡IO而利用TDI。

Microsoft在安裝第三方內核模式驅動程序和網絡提供商方面變得越來越嚴格。 現在,使用基於Microsoft的TLS證書對WebDrive文件系統驅動程序進行了安全簽名,並且我們的網絡提供商已在Microsoft Windows SDK團隊中注冊為Windows平台的合法網絡提供商。

一旦完成這些步驟,就需要考慮緩存。 通過NP / FSD通過導線直接I / O到Google是不現實的,因此您需要在本地驅動器上使用一個中間緩存系統。 有很多方法可以做到這一點,太多了。 但是,請記住,您可能有多個用戶模式應用程序同時讀寫網絡驅動器(或一個WinWord之類的應用程序會打開多個文件句柄),並且您將需要能夠正確處理所有這些請求。鎖定和ACL,然后將這些更改和訪問規則映射到遠程服務器。

不要失去信心...正如WebDrive和NetDrive所展示的,您正在尋找要做的事情,但這並不是一個可以在幾個周末結束的項目。 我不確定NetDrive的作者,但自1997年以來我們就一直在全職開發WebDrive。似乎每個Windows Patch都會更改某些內容,而每個新版本的Adobe / Office / XYZ都會通過IO調用來做一些古怪的事情,這使我們拉我們的頭發。

注意:還有另一種方法可以實現FSD周圍的野獸,這是DropBox策略。 使用本地硬盤驅動器上的臨時文件夾,利用用戶模式應用程序中的目錄更改通知來監視文件夾中的文件更改,並將更改動態同步到遠程端。 GoogleDrive和許多其他在線存儲公司都這樣做,因為它既快捷又容易; 但是,如果在短時間內發生許多更改,則Windows消息系統中的更改通知可能會丟失,並且數據可能會被破壞。

我意識到要消化的東西很多,但這是可行的。 祝好運!

我建議您在開始編碼之前,需要花一些時間來全面了解Google雲端硬盤並將其功能映射到Windows。 阻抗的一些采樣點:

  • 雲端硬盤中的文件夾根本不是文件夾
  • 雲端硬盤中的文件=元數據,內容是可選的
  • 雲端硬盤具有很多無法映射到NTFS的元數據(例如屬性)
  • 適用文件會轉換為Google文檔還是原樣存儲
  • 您將如何映射修訂
  • 權限

幾乎可以肯定還有更多,這只是我的腦袋。 您的應用需要就所有這些方面做出決策。 通常,Drive比NTFS提供更多的功能,因此只要您只是將其用作備份存儲庫,就可以了。

暫無
暫無

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

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