共用方式為


整合雲端儲存提供者

當您有雲端儲存體提供者時,您應該採取幾個步驟,為使用者提供一致的慣用體驗。 這兩件事會註冊為同步根提供者,並將您的應用程式整合到功能窗格的根層級。

重要

只有從 Windows 10 開始,才支援整合您的雲端儲存體提供者。

 

第一件事是註冊為同步根提供者。 這可讓 Windows Shell 知道您的應用程式,而且您的應用程式將負責同步處理同步根目錄下的檔案。 這也會讓其他應用程式知道您正在同步處理這些檔案,以便適當地回應。 其他應用程式接著可以使用 StorageFile.Provider 來取得應用程式的 DisplayName識別碼

若要註冊為同步根提供者,您必須建立多個登錄專案。 提供索引鍵/值組清單之前,以下是您應該以您自己的應用程式資料取代的一些預留位置。

  • [儲存體提供者識別碼]:雲端儲存體提供者的名稱。 不論您的應用程式版本為何,此名稱都應該一致。 其中一個範例是 OneDrive。
  • [Windows SID]:識別使用者的唯一 Windows SID。 如果您的應用程式支援單一電腦上多個使用者的多個安裝,則需要此專案。
  • [帳戶識別碼]:此使用者目前帳戶的服務提供者識別碼。 某些提供者需要為使用者提供多個同步處理根目錄的能力。 其中一個範例是工作和個人帳戶。 帳戶 識別碼 可讓您為一位使用者註冊多個帳戶。 如果您的提供者支援每個使用者的多個同步處理根目錄,則需要此片段。

這些預留位置會結合在一起,以形成同步根識別碼。在形成同步根識別碼時,您必須在每個預留位置之間放置 字元。以下是需要建立的索引鍵/值組。

  • HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\SyncRootManager\[storage provider ID][Windows SID][帳戶識別碼]\DisplayNameResource :指向 Windows Shell 或其他應用程式可以取得同步根目錄的使用者易記名稱的資源。
  • HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\SyncRootManager\[storage provider ID][Windows SID][帳戶識別碼]\IconResource :指向 Windows Shell 或其他應用程式可以取得同步根目錄圖示的資源。
  • HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\SyncRootManager\[storage provider ID][Windows SID][帳戶識別碼]\UserSyncRoots\[Windows SID] :同步根目錄所在的磁片位置。

除了註冊為同步根提供者之外,您也希望使用者能夠輕鬆存取您提供的資料。 檔案總管命名空間的設計目的是為了提供方便存取的方法。 為提供者建立命名空間延伸模組,並將其併入檔案總管視窗中,可讓使用者與服務的根層級互動,就像與其他檔案總管專案一樣。 本主題說明如何擴充檔案總管命名空間,讓提供者出現在功能窗格中的根層級。

檔案總管視窗的功能窗格是左側顯示的視窗部分。 在下圖中,您可以看到此使用者的命名空間結構。 功能窗格上的根層級包含 OneDrive此電腦網路的物件。 請遵循下列步驟,將您的擴充功能新增至相同的層級。

流覽窗格

若要將延伸模組新增至功能窗格,您必須先具備下列專案,才能編輯登錄:

  • 檔系統資料夾,其中包含要向使用者顯示的資料。

  • 會出現在功能窗格中的雲端服務名稱。 如果您的服務支援多個帳戶,也可能是實例的名稱。

  • 應用程式的可識別圖示。

  • 應用程式的 CLSID。 為您的應用程式產生 CLSID 的其中一種方式是使用 Uuidgen.exe。 如需 CLSID 的詳細資訊,請參閱 CLSID 金鑰

下列步驟會修改登錄,以取得檔案總管命名空間中的必要資訊。 特定步驟會執行三件事。

  • 在 CLSID 的登錄中建立機碼,其中包含延伸模組名稱和圖示的值,以及定義其行為的其他資訊。

  • 將您的延伸模組設定為整合至適當位置的功能窗格,並具有適當的可見度。

  • 將您的延伸模組設定為具有流覽窗格中元素的預期行為。

這些指示特別使用 reg.exe 命令,不過您可以使用您選擇的任何登錄編輯工具。 您甚至可以將這些步驟整合到以程式設計方式更新登錄的安裝程式中。

指示

步驟 1:新增 CLSID 並命名擴充功能

將擴充功能的名稱新增至登錄底下的 HKEY_CURRENT_USER。 您也將新增此延伸模組的唯一識別碼。 您可以為每個使用者新增一個以上的擴充功能,但在此情況下,您需要每個延伸模組的唯一名稱和識別碼。 這個名稱和識別碼必須在這些步驟的其餘部分保持一致。 在此範例中,名稱為 MyCloudStorageApp

重要

這些步驟中提供的識別碼 (0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3) 只是作為範例使用。 您必須將此變更為唯一的 CLSID。

 

reg add HKCU\Software\Classes\CLSID\{0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3} /ve /t REG_SZ /d 「MyCloudStorageApp」 /f

步驟 2:設定圖示的影像

提供應該顯示在功能窗格中之圖示的路徑。 在下列範例中, 1043 是指所指示 DLL 中圖示的資源識別碼。

重要

您需要更新映射路徑。 它應該指向應用程式安裝映射的一般路徑。

 

reg add HKCU\Software\Classs\CLSID\{0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3}\DefaultIcon /ve /t REG_EXPAND_SZ /d %%SystemRoot%%\system32\imageres.dll,-1043 /f

步驟 3:將延伸模組新增至功能窗格,使其可見

將此值設定為 0x1 表示應該釘選延伸模組。 這可確保預設會顯示給使用者。 使用者的預設設定是只有釘選的專案會顯示在功能窗格中。 使用者可以在功能窗格中按一下滑鼠右鍵,然後選取 [ 顯示所有資料夾] 來變更該設定。 如果您不想釘選擴充功能,您可以將此值設定為 0x0。 這不會移除您的延伸模組,但只會防止它依預設向使用者顯示。

reg add HKCU\Software\Classes\CLSID\{0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3} /v System.IsPinnedToNameSpaceTree /t REG_DWORD /d 0x1 /f

步驟 4:在功能窗格中設定延伸模組的位置

這很重要,以確保功能窗格為使用者提供一致的體驗。

reg add HKCU\Software\Classs\CLSID\{0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3} /v SortOrderIndex /t REG_DWORD /d 0x42 /f

步驟 5:提供裝載延伸模組的 dll。

使用shell32.dll模擬預設視窗資料夾。 只有當您有特定原因可以這麼做,且熟悉命名空間延伸模組時,才變更此專案。

reg add HKCU\Software\Classes\CLSID\{0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3}\InProcServer32 /ve /t REG_EXPAND_SZ /d %%systemroot%\system32\shell32.dll /f

步驟 6:定義實例物件

指出您的命名空間延伸模組應該像檔案總管中的其他檔案資料夾結構一樣運作。 如需殼層實例物件的詳細資訊,請參閱 使用 Shell 實例物件建立殼層延伸模組

reg add HKCU\Software\Classes\CLSID\{0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3}\Instance /v CLSID /t REG_SZ /d {0E5AAE11-A475-4c5b-AB00-C66DE400274E} /f

步驟 7:提供目的檔案夾的檔案系統屬性

這是確保檔案總管為使用者提供一致且預期的體驗的必要專案。 此命令 會設定FILE_ATTRIBUTE_DIRECTORYFILE_ATTRIBUTE_READONLY,這兩者都是 檔案屬性常數

reg add HKCU\Software\Classs\CLSID\{0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3}\Instance\InitPropertyBag /v Attributes /t REG_DWORD /d 0x11 /f

步驟 8:設定同步根目錄的路徑

設定同步根目錄的路徑。

reg add HKCU\Software\Classes\CLSID\{0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3}\Instance\InitPropertyBag /v TargetFolderPath /t REG_EXPAND_SZ /d %%USERPROFILE%\MyCloudStorageApp /f

步驟 9:設定適當的殼層旗標

設定將命名空間延伸模組釘選到檔案總管樹狀結構所需的一些旗標。

reg add HKCU\Software\Classs\CLSID\{0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3}\ShellFolder /v FolderValueFlags /t REG_DWORD /d 0x28 /f

步驟 10:設定適當的旗標來控制殼層行為

設定適當的 SFGAO 旗標。 相關的旗標是SFGAO_CANCOPY、SFGAO_CANLINK、SFGAO_STORAGE、SFGAO_HASPROPSHEET、SFGAO_STORAGEANCESTOR、SFGAO_FILESYSANCESTOR、SFGAO_FOLDER、SFGAO_FILESYSTEM和SFGAO_HASSUBFOLDER。

reg add HKCU\Software\Classs\CLSID\{0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3}\ShellFolder /v Attributes /t REG_DWORD /d 0xF080004D /f

步驟 11:在命名空間根目錄中註冊您的延伸模組

將命名空間延伸設定為桌面資料夾的子系。

reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3} /ve /t REG_SZ /d MyCloudStorageApp /f

步驟 12:從桌面隱藏擴充功能

您的延伸模組只會出現在檔案總管的功能窗格中。 命名空間延伸模組的運作方式與一般快捷方式一樣。 因此,您不應該使用這個方法來建立桌面快捷方式。

reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel /v {0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3} /t REG_DWORD /d 0x1 /f