名前空間拡張機能の場所の指定
名前空間拡張機能のルートは、通常、Windows エクスプローラーによってツリー ビューとフォルダー ビューの両方のフォルダーとして表示されます。 Windows エクスプローラーで拡張機能のファイルとサブフォルダーを表示するには、ルート フォルダーがシェル名前空間階層のどこにあるかを指定する必要があります。 この位置は 、ジャンクション ポイントと呼ばれます。
仮想フォルダーをジャンクション ポイントとして使用する
拡張機能のジャンクション ポイントを定義する最も簡単な方法は、ルート フォルダーをシステム仮想フォルダーのサブフォルダーにすることです。 この種類のジャンクション ポイントは、 仮想ジャンクション ポイントと呼ばれます。 [デスクトップ] フォルダーと [マイ コンピューター] フォルダーは仮想ジャンクション ポイントの一般的な場所ですが、リモート コンピューターまたは [個人用ネットワークの場所]、[インターネット エクスプローラー]、[コントロール パネル] フォルダーの下に仮想ジャンクション ポイントを定義することもできます。
仮想ジャンクション ポイントを定義するには、適切な仮想フォルダーを表すキーのサブキーを作成し、拡張機能のクラス識別子 (CLSID) の文字列形式で名前を付けます。 登録された CLSID は次のように表示されます。
HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER
Software
Microsoft
Windows
CurrentVersion
Explorer
Virtual Folder Name
NameSpace
{Extension CLSID}
(Default) = Junction Point Name
仮想フォルダー名 は、次の表のサブキーの 1 つです。
場所 | 仮想フォルダー名 |
---|---|
コントロール パネル | ControlPanel |
デスクトップ | デスクトップ |
ネットワーク全体 | NetworkNeighborhood\EntireNetwork |
[マイ コンピューター] | MyComputer |
マイ ネットワーク | NetworkNeighborhood |
リモート コンピューター | RemoteComputer |
ユーザー ファイル | UsersFiles |
リモート拡張機能は 、IRemoteComputer で初期化する必要があります。
ファイル システム フォルダーをジャンクション ポイントとして使用する
ファイル システム フォルダーをジャンクション ポイントとして定義するには、2 つの方法があります。 最も簡単な方法は、適切な場所にフォルダーを作成し、フォルダーの名前にピリオドを追加し、その後に拡張機能の CLSID の文字列形式を追加することです。 フォルダー名のみが Windows エクスプローラーに表示されます。 次の例では、表示名が MyFolder のジャンクション ポイントを作成します。
MyFolder.{Extension CLSID}
または、次の方法で、従来の名前付きフォルダーをジャンクション ポイントとして定義することもできます。
- フォルダーを読み取り専用にする。
- PathMakeSystemFolder を呼び出して、フォルダーをシステム フォルダーにします。
- 拡張子の CLSID を含むフォルダーに非表示のDesktop.ini ファイルを配置します。
Desktop.iniは、フォルダーの動作の特定の側面をカスタマイズするために任意のフォルダーに追加できる標準のテキスト ファイルです。 このファイルの使用方法の一般的な説明については、「 How to Customize Folders with Desktop.ini」を参照してください。 フォルダーをジャンクション ポイントとして定義するには、[Desktop.iniの ShellClassInfo] セクションには、次のように拡張機能の CLSID が含まれている必要があります。
[.ShellClassInfo]
CLSID={Extension CLSID}
名前空間拡張機能のビューを開く
ユーザーがジャンクション ポイントを参照すると、Windows エクスプローラーによってルート フォルダーのビューが自動的に作成されます。 拡張機能の CLSID を引数としてExplorer.exeを明示的に起動して、ビューを作成することもできます。 たとえば、この方法を使用して、ショートカット メニューまたはショートカットから拡張機能のビューを起動できます。 たとえば、ツリー ビューを含む MyExtension のビューを起動するには、次のコマンド文字列を使用できます。
%SystemRoot%\Explorer.exe /e,::{MyExtension CLSID}
別のコマンド文字列を使用して、拡張機能内のオブジェクトのビューを起動できます。 この機能は、たとえば、フォルダー ビューを使用して、ユーザーが複数の圧縮ファイルの 1 つの内容を表示できるようにする拡張機能の場合に便利です。
%SystemRoot%\Explorer.exe /e,::{MyExtension CLSID},objectname
objectname パラメーターは、表示するオブジェクトの名前です。 Windows エクスプローラーは、名前を対応する PIDL に変換し、PIDL を新しいフォルダー オブジェクトの IPersistFolder::Initialize メソッドに渡します。
注意
CLSID 文字列の前にコロンのペアを付ける必要があります (::)または、コマンドが失敗します。 前に示した 2 つのサンプル コマンド ラインで使用されるスラッシュ e (/e) フラグは、ツリー ビューを表示するように Windows エクスプローラーに指示します。 フラグは、2 つのコロンからコンマで区切る必要があります。 ツリー ビューが不要な場合は、/e フラグとコンマを省略します。