共用方式為


整合雲端記憶體提供者

當您有雲端記憶體提供者時,您應該採取幾個步驟,為使用者提供一致且偏好的體驗。 這兩件事會註冊為同步根提供者,並將您的應用程式整合到導航窗格的根層級。

重要

僅從 Windows 10 開始,才支援整合您的雲端記憶體提供者。

 

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

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

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

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

  • HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\SyncRootManager\[記憶體提供者標識符][Windows SID][帳戶標識符]\DisplayNameResource :指向 Windows Shell 或其他應用程式可以取得同步根目錄的使用者易記名稱的資源。
  • HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\SyncRootManager\[記憶體提供者標識符][Windows SID][帳戶標識符]\IconResource :指向 Windows Shell 或其他應用程式可以取得同步根目錄圖標的資源。
  • HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\SyncRootManager\[記憶體提供者標識符][Windows SID][帳戶標識符]\UserSyncRoots\[Windows SID]:同步根目錄所在的磁碟位置。

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

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

瀏覽窗格

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

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

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

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

  • 應用程式的 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\Classes\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\Classes\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:定義實例物件

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

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\Classes\CLSID\{0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3}\Instance\InitPropertyBag /v Attributes /t REG_DWORD /d 0x11 /f

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

設定同步根目錄的路徑。

reg 新增 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\Classes\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\Classes\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 /REG_SZ t /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