クラウド ストレージ プロバイダーを統合する

クラウド ストレージ プロバイダーがある場合は、ユーザーに一貫性のある優先エクスペリエンスを提供するために、いくつかの手順を実行する必要があります。 これら 2 つのことは、同期ルート プロバイダーとして登録し、アプリケーションをナビゲーション ウィンドウのルート レベルに統合することです。

重要

クラウド ストレージ プロバイダーの統合は、Windows 10 以降でのみサポートされます。

 

最初に、同期ルート プロバイダーとして登録します。 これにより、Windows シェルはアプリケーションについて知り、アプリケーションが同期ルートの下でファイルを同期する役割を担うことになります。 これにより、他のアプリケーションは、適切に応答できるように、これらのファイルを同期していることを知らせることもできます。 その後、他のアプリケーションで StorageFile.Provider を使用して、アプリケーションの DisplayNameID を 取得できます。

同期ルート プロバイダーとして登録するには、複数のレジストリ エントリを作成する必要があります。 キーと値のペアの一覧を提供する前に、独自のアプリケーション データに置き換える必要があるプレースホルダーをいくつか次に示します。

  • [ストレージ プロバイダー ID]: クラウド ストレージ プロバイダーの名前。 この名前は、アプリケーションのバージョンに関係なく一貫している必要があります。 この例として、OneDrive があります。
  • [Windows SID]: ユーザーを識別する一意の Windows SID。 アプリで 1 台のコンピューター上の複数のユーザーに対して複数のインストールがサポートされている場合は、この部分が必要です。
  • [アカウント ID]: このユーザーの現在のアカウントのサービス プロバイダー識別子。 一部のプロバイダーでは、ユーザーに複数の同期ルートを提供する機能が必要です。 その一例として、作品と個人用アカウントがあります。 アカウント ID を使用すると、1 人のユーザーに複数のアカウントを登録できます。 プロバイダーがユーザーごとに複数の同期ルートをサポートしている場合は、この部分が必要です。

これらのプレースホルダーを組み合わせて同期ルート ID を形成します。同期ルート ID を形成するときは、各プレースホルダーの間に ! 文字を配置する必要があります。作成する必要があるキーと値のペアを次に示します。

  • HKLM\Software\Microsoft\Windows\CurrentVersion\エクスプローラー\SyncRootManager\[ストレージ プロバイダー ID]![Windows SID]![アカウント ID]\DisplayNameResource: Windows シェルまたはその他のアプリケーションが同期ルートのわかりやすい名前を取得できるリソースを指します。
  • HKLM\Software\Microsoft\Windows\CurrentVersion\エクスプローラー\SyncRootManager\[ストレージ プロバイダー ID]![Windows SID]![アカウント ID]\IconResource: Windows シェルまたはその他のアプリケーションが同期ルートのアイコンを取得できるリソースを指します。
  • HKLM\Software\Microsoft\Windows\CurrentVersion\エクスプローラー\SyncRootManager\[ストレージ プロバイダー ID]![Windows SID]![アカウント ID]\UserSyncRoots\[Windows SID] : 同期ルートが配置されているディスク上の場所。

同期ルート プロバイダーとして登録する以外に、ユーザーが指定したデータに簡単にアクセスできるようにする必要もあります。 エクスプローラー名前空間は、簡単にアクセスするためのメソッドを提供するように設計されています。 プロバイダーの名前空間拡張機能を作成し、それをエクスプローラー ウィンドウに組み込むことで、ユーザーは他のエクスプローラー項目と同様に、サービスのルート レベルと対話できます。 このトピックでは、プロバイダーがナビゲーション ウィンドウのルート レベルで表示されるように、エクスプローラー名前空間を拡張する方法について説明します。

エクスプローラー ウィンドウのナビゲーション ウィンドウは、左側に表示されるウィンドウの部分です。 次の図では、このユーザーの名前空間構造を確認できます。 ナビゲーション ウィンドウのルート レベルには、 OneDriveこの PCおよびネットワークのオブジェクトが含まれます。 次の手順に従うと、拡張機能が同じレベルに追加されます。

ナビゲーション ウィンドウ

ナビゲーション ウィンドウに拡張機能を追加するには、レジストリを編集する前に次のものが必要です。

  • ユーザーに表示するデータを含むファイル システム フォルダー。

  • ナビゲーション ウィンドウに表示されるクラウド サービスの名前。 サービスが複数のアカウントをサポートしている場合は、インスタンスの名前を指定することもできます。

  • アプリケーションの識別可能なアイコン。

  • アプリケーションの CLSID。 アプリケーションの CLSID を生成する方法の 1 つは、Uuidgen.exeを使用することです。 CLSID の詳細については、「 CLSID キー 」を参照してください。

次の手順では、エクスプローラー名前空間に必要な情報を取得するためにレジストリを変更します。 具体的な手順では、3 つのことを行います。

  • CLSID のレジストリに、拡張機能の名前とアイコンの値、およびその動作を定義するその他の情報を含むキーを作成します。

  • 適切な場所で適切な可視性を持つナビゲーション ウィンドウに統合されるように拡張機能を構成します。

  • ナビゲーション ウィンドウの要素に対して想定される動作を持つ拡張機能を構成します。

これらの手順では、特に reg.exe コマンドを使用しますが、任意のレジストリ編集ツールを使用できます。 これらの手順を、プログラムによってレジストリを更新するインストーラーに統合することもできます。

Instructions

手順 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を使用して、既定の Windows フォルダーをエミュレートします。 これを変更するのは、特定の理由があり、名前空間拡張機能に精通している場合のみです。

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 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\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\エクスプローラー\Desktop\NameSpace\{0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3} /ve /t REG_SZ /d MyCloudStorageApp /f

手順 12: 拡張機能をデスクトップから非表示にする

拡張機能は、エクスプローラーのナビゲーション ウィンドウにのみ表示することが重要です。 名前空間拡張機能は、通常のショートカットのように機能しません。 そのため、このメソッドを使用してデスクトップ ショートカットを作成しないでください。

reg add HKCU\Software\Microsoft\Windows\CurrentVersion\エクスプローラー\HideDesktopIcons\NewStartPanel /v {0672A6D1-A6E0-40FE-AB16-F25BADC6D9E3} /t REG_DWORD /d 0x1 /f