クラウド ストレージ プロバイダーを統合する
クラウド ストレージ プロバイダーがある場合は、ユーザーに一貫性のある優先エクスペリエンスを提供するために、いくつかの手順を実行する必要があります。 これら 2 つの事項は、同期ルート プロバイダーとして登録し、アプリケーションをナビゲーション ウィンドウのルート レベルに統合することです。
大事な
クラウド ストレージ プロバイダーの統合は、Windows 10 以降でのみサポートされます。
最初に、同期ルート プロバイダーとして登録します。 これにより、Windows シェルはアプリケーションについて知り、アプリケーションが同期ルートの下でファイルを同期する役割を担います。 これにより、適切に応答できるように、これらのファイルを同期していることを他のアプリケーションに通知することもできます。 その後、他のアプリケーション StorageFile.Provider を使用して、アプリケーションの DisplayName と ID を取得できます。
同期ルート プロバイダーとして登録するには、複数のレジストリ エントリを作成する必要があります。 キーと値のペアの一覧を提供する前に、独自のアプリケーション データに置き換える必要があるプレースホルダーをいくつか次に示します。
- [ストレージ プロバイダー ID]: クラウド ストレージ プロバイダーの名前。 この名前は、アプリケーションのバージョンに関係なく一貫性がある必要があります。 その例として、OneDrive があります。
- [Windows SID]: ユーザーを識別する一意の Windows SID。 アプリが 1 台のコンピューター上の複数のユーザーに対して複数のインストールをサポートしている場合は、この部分が必要です。
- [アカウント ID]: このユーザーの現在のアカウントのサービス プロバイダー識別子。 一部のプロバイダーでは、ユーザーに複数の同期ルートを提供する機能が必要です。 この 1 つの例は、仕事用アカウントと個人用アカウントです。 アカウント ID を使用すると、1 人のユーザーに複数のアカウントを登録できます。 プロバイダーがユーザーごとに複数の同期ルートをサポートしている場合は、この部分が必要です。
これらのプレースホルダーを組み合わせて、同期ルート ID を形成します。を配置する必要があります。同期ルート ID を形成するときに、各プレースホルダーの間に文字を します。作成する必要があるキーと値のペアを次に示します。
- HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\SyncRootManager\[ストレージ プロバイダー ID]![Windows SID]![アカウント ID]\DisplayNameResource: Windows シェルまたはその他のアプリケーションが同期ルートのわかりやすい名前を取得できるリソースを指します。
- HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\SyncRootManager\[ストレージ プロバイダー ID]![Windows SID]![アカウント ID]\IconResource: Windows シェルまたはその他のアプリケーションが同期ルートのアイコンを取得できるリソースを指します。
- HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\SyncRootManager\[ストレージ プロバイダー ID]![Windows SID]![アカウント ID]\UserSyncRoots\[Windows SID]: 同期ルートがあるディスク上の場所。
同期ルート プロバイダーとして登録する以外に、ユーザーが提供するデータに簡単にアクセスできるようにする必要もあります。 エクスプローラー名前空間は、簡単にアクセスするためのメソッドを提供するように設計されています。 プロバイダーの名前空間拡張機能を作成し、[エクスプローラー] ウィンドウに組み込むことで、ユーザーは他のエクスプローラー項目と同様にサービスのルート レベルを操作できます。 このトピックでは、プロバイダーがナビゲーション ウィンドウのルート レベルに表示されるようにエクスプローラー名前空間を拡張する方法について説明します。
エクスプローラー ウィンドウのナビゲーション ウィンドウは、左側に表示されるウィンドウの部分です。 次の図では、このユーザーの名前空間構造を確認できます。 ナビゲーション ウィンドウのルート レベルには、OneDrive、この PC、および ネットワークのオブジェクトが含まれます。 次の手順に従うと、拡張機能が同じレベルに追加されます。
ナビゲーション ウィンドウに拡張機能を追加するには、レジストリを編集する前に次のものが必要です。
ユーザーに表示するデータを含むファイル システム フォルダー。
ナビゲーション ウィンドウに表示されるクラウド サービスの名前。 サービスで複数のアカウントがサポートされている場合は、インスタンスの名前を指定することもできます。
アプリケーションの識別可能なアイコン。
アプリケーションの CLSID。 アプリケーションの CLSID を生成する方法の 1 つは、Uuidgen.exeを使用することです。 CLSID の詳細については、CLSID キー の を参照してください。
次の手順では、エクスプローラー名前空間に必要な情報を取得するためにレジストリを変更します。 具体的な手順では、3 つのことを行います。
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 を使用して、既定の 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_DIRECTORY と FILE_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\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