クライアントの種類にプログラムを登録する

このトピックでは、ブラウザー、電子メール、メディア再生、インスタント メッセージング、または Java 用仮想マシンのいずれかのクライアントの種類として、Windows レジストリにプログラムを登録する方法について説明します。

Note

このドキュメントに記載された情報の対象となるオペレーティング システムは次のとおりです。

  • Windows 2000 Service Pack 3 (SP3)
  • Windows 2000 Service Pack 4 (SP4)
  • Windows XP Service Pack 1 (SP1)
  • Windows XP Service Pack 2 (SP2)
  • Windows XP Service Pack 3 (SP3)
  • Windows Server 2003
  • Windows Vista
  • Windows Vista Service Pack 1 (SP1)
  • Windows 8

 

このトピックは次のセクションで構成されます。

このトピックでは、特定のクライアントの種類としてプログラムを登録する方法に関する既存のドキュメントを拡張します。 そのドキュメントへのリンクについては、「関連トピック」セクションを参照してください。

すべてのクライアントの種類の共通登録要素

プログラムをクライアントの種類として登録する場合、ほとんどのレジストリ エントリは、クライアントの種類に関係なく同じです。 ただし、一部のレジストリ エントリはクライアントの種類に固有であり、「特定のクライアントの種類の登録要素」セクションに記載されています。

このセクションでは、次のトピックについて説明します。

Note

このトピック全体で斜体で指定されたサブキー名は、ユーザー定義のサブキー名または使用可能な値のセットのプレースホルダーです。 サンプル名を含む完全な例については、「完全なサンプルの登録」セクションを参照してください。

 

すべてのクライアントの種類の登録情報は、次のサブキーの下に格納されます。

HKEY_LOCAL_MACHINE
   Software
      Clients
         ClientTypeName

ClientTypeName は、次のいずれかのサブキー名です。

  • StartMenuInternet (ブラウザー用)
  • Mail (メール用)
  • Media (メディア再生用)
  • IM (インスタント メッセージング用)
  • JavaVM (Virtual Machin for Java 用)

このトピックでは、Litview.exe という名前の実行可能ファイルを使用して、Litware Inc.の "Lit View" という名前の架空のコンピューター プログラムへの参照を書き留めます。 この架空のプログラムは、説明目的で必要に応じて、インスタント メッセンジャー、ブラウザ、または別の種類のクライアント プログラムとして同じ意味で使用されます。

正規名の選択

ベンダーは、プログラムの正規名を選択する必要があります。 正規名はユーザーに表示されないため、ローカライズする必要はありません。 その唯一の目的は、プログラムを識別するために使用できる一意の文字列を提供することです。 通常、プログラムの英語名と同じですが、これは単なる慣例です。

ブラウザー以外のクライアント型の場合、正規名には任意の文字列を指定できます。 別のベンダーが使用する可能性が高くない一意の名前を選択します。

ブラウザー クライアントの場合、標準名は、関連付けられている実行可能ファイルの名前 (拡張子を含む) である必要があります。たとえば、"Litview.exe" です。

正規名の例をいくつか次に示します。

  • Iexplore.exe (ブラウザー)
  • Windows Mail (電子メール)
  • Windows Media Player (メディア)
  • Windows Messenger (インスタント メッセージング)

次に示すように、サブキーを作成して正規名を登録します。 サブキーの名前は正規名です。 そのプログラムの登録に関連するすべての情報は、このサブキーの下に存在します。

HKEY_LOCAL_MACHINE
   Software
      Clients
         ClientTypeName
            CanonicalName

プログラムの表示名の登録

登録の次の手順は、プログラムの表示名を指定することです。 次に示すように、正規名キーの下に値として指定されます。 ここでも、CanonicalNameClientTypeName はキーの実際の名前ではなく、Lit View などの真の名前のプレースホルダーにすぎないことに注意してください。

Note

Windows 8 の時点で、[コンピューターの設定 (SPAD)][既定のプログラム] の登録に使用される名前は、SPAD の変更が既定のプログラムの登録をトリガーするために一致する必要があります。

 

HKEY_LOCAL_MACHINE
   Software
      Clients
         ClientTypeName
            CanonicalName
               LocalizedString = @FilePath,-StringID

LocalizedString 値は REG_SZ 文字列であり、"at" 記号 (@)、.dll または .exe ファイルへの完全なパス、コンマ、負符号、および 10 進整数で構成されます。 10 進整数は、.dll または .exe ファイル内に含まれる文字列リソースの ID であり、その値は、このクライアントの名前としてユーザーに表示されます。 ファイル パスにスペースが含まれている場合でも、引用符は必要ありません。

この方法で表示名文字列を登録すると、複数の言語で同じ登録を使用できます。 各言語インストールでは、同じリソース ID に格納されている表示名を持つ異なるリソース ファイルが提供されます。

次の例は、架空の Lit View インスタント メッセージング プログラムの登録を示しています。 インスタント メッセージング プログラムであるため、CanonicalName サブキー (この場合は Lit View) は IM サブキーの下に格納されます。

HKEY_LOCAL_MACHINE
   Software
      Clients
         IM
            Lit View
               (Default) = Lit View
               LocalizedString = @C:\Program Files\LitwareInc\ResourceDLL.dll,-123

クライアントの表示名のセカンダリ宣言として (Default) エントリを使用していることに注意してください。 LocalizedString が存在しない場合は、代わりに (Default) 値が使用されます。 これは、すべてのクライアントの種類 (インターネット ブラウザー、電子メール ブラウザー、インスタント メッセンジャー、メディア プレーヤー) で動作します。 Internet Explorer クライアント レジストリ レイアウトとの下位互換性を保つために、電子メール プログラムでは、CanonicalName サブキーの (既定値) 値を、現在インストールされている言語でクライアントの表示名に設定する必要があります。

プログラムのアイコンの登録

Note

このセクションは Windows 2000 には適用されません。

 

既定では、Windows XP と Windows Vista の [スタート] メニューの上部には、[インターネット][電子メール] のアイコンが含まれています。 これらのアイコンは、Windows 7 以降には存在しません。 ブラウザーおよび電子メール クライアントの場合、プログラムがクライアントの種類の既定値として割り当てられると、そのプログラムの登録アイコンがそれらの [スタート] メニュー エントリに表示されます。

ブラウザーおよび電子メール クライアントでは、プログラムのアイコンの登録が必須です。 Java クライアントの種類のメディア再生、インスタント メッセージング、または仮想マシンのアイコンの登録は省略可能であり、これらのクライアントの種類の登録済みアイコンは現在 Windows では使用されず、Windows XP または Windows Vista の [スタート] メニューの上部には表示されません。

クライアント プログラムのアイコンを登録するには、次に示すように既定値を持つ DefaultIcon サブキーを追加します。

HKEY_LOCAL_MACHINE
   Software
      Clients
         ClientTypeName
            CanonicalName
               DefaultIcon
                  (Default) = FilePath,IconIndex

FilePath 値は、アイコンを含むファイルへの完全なパスです。 このパスには、スペースが含まれている場合でも、引用符は必要ありません。

IconIndex 値は次のように解釈されます。

  • IconIndex が正の数である場合、この数は、ファイルに格納されているアイコンの 0 から始まる配列のインデックスとして使用されます。 たとえば、IconIndex が 1 の場合、2 番目のアイコンがファイルから読み込まれます。
  • IconIndex が負の数の場合、アイコンのリソース識別子 (インデックスではなく) として IconIndex の絶対値が使用されます。 たとえば、IconIndex が -3 の場合、リソース識別子が 3 のアイコンがファイルから読み込まれます。

次の例は、架空の Lit View ブラウザーの登録を示しています。 Litview.exe ファイルに格納されている 2 番目のアイコンが既定として使用されます。

HKEY_LOCAL_MACHINE
   Software
      Clients
         StartMenuInternet
            LITVIEW.EXE
               DefaultIcon
                  (Default) = C:\Program Files\LitwareInc\Litview.exe,1

オープン動詞の登録

Note

このセクションは Windows 2000 には適用されません。 次の手順は、ブラウザーと電子メール クライアントにのみ必要です。

 

ユーザーが既定のインターネットまたは電子メール プログラムとしてプログラムを選択したとします。 そのユーザーは、Windows XP または Windows Vista の [スタート] メニューの [インターネット] または [電子メール] アイコンをクリックしてプログラムを開きます。 その時点で、ここに示すように登録されたコマンド ラインが実行されます。

HKEY_LOCAL_MACHINE
   Software
      Clients
         ClientTypeName
            CanonicalName
               shell
                  open
                     command
                        (Default) = command line

コマンド ラインでは、ファイルへの完全修飾絶対パスを指定し、その後にオプションのコマンド ライン オプションを指定する必要があります。 エントリの種類が REG_EXPAND_SZ の場合は、パスで環境変数を使用できます。 コマンド ライン内のスペースが誤って解釈されないように、引用符を適切に使用します。 コマンド ラインは、適切な既定値でプログラムを実行する必要があります。 通常、ブラウザーはユーザーのホーム ページに既定で設定されます。 電子メール プログラムは通常、ユーザーの [受信トレイ] を開きます。

次の例は、架空の Lit View ブラウザーの open 動詞の登録を示しています。 コマンド ライン オプションは指定されません。

HKEY_LOCAL_MACHINE
   Software
      Clients
         StartMenuInternet
            LITVIEW.EXE
               shell
                  open
                     command
                        (Default) = "C:\Program Files\LitwareInc\Litview.exe"

この値では、埋め込みスペースが含まれているため、パスの周囲に引用符が配置されることに注意してください。 これらの引用符を省略すると、コマンド ラインが誤って解釈される可能性があります。

インストール情報の登録

Note

このセクションは、Windows Server 2003 には適用されません。

 

次の表に示すように、ユーザーがコンピューターごとの既定のプログラムを選択する機能に名前が付けられ、アクセスされます。 (Windows Vista では、新しい機能 [Set your default programs] (既定のプログラムを設定する) が導入されました。ユーザーごとの既定値を設定できます)。

オペレーティング システム Title アクセス場所
Windows 7 プログラム アクセスとコンピューターの既定値を設定する
  • [スタート] メニューの [既定のプログラム] オプション
  • [既定のプログラム] コントロール パネルのアイテム
Windows Vista プログラム アクセスとコンピューターの既定値を設定する
  • [スタート] メニューの [既定のプログラム] オプション
  • [既定のプログラム] コントロール パネルのアイテム
Windows XP SP2 プログラムのアクセスと既定値を設定する
  • [スタート] メニュー
  • [プログラムの追加と削除] コントロール パネルのアイテム
Windows XP SP1 プログラムの構成
  • [プログラムの追加と削除] コントロール パネルのアイテム

 

わかりやすくするために、このトピックではこの機能の Windows 7 タイトルを使用します。 この機能のすべてのバージョンは、一般的に SPAD と呼ばれます。

Note

Windows 2000 または Windows XP を実行している場合、[コンピューターの既定] ページを表示するには、Windows 2000 SP3 または Windows XP SP1 以上がインストールされている必要があります。 Windows Vista 以降では、[コンピューターの既定] ページへのアクセスには管理者権限が必要です。 このため、開発者は、すべてのユーザーがアプリケーションの既定値を管理できるように、[既定のプログラムの設定] コントロール パネル項目に登録することをお勧めします。

 

次のレジストリ ツリーは、プログラムの InstallInfo キーに登録する必要があるさまざまな情報を示しています。これによりプログラムは、[コンピューターの既定] ページにクライアントの種類のオプションとして表示されます。 これらの各値については、次のセクションで詳しく説明します。

HKEY_LOCAL_MACHINE
   Software
      Clients
         ClientTypeName
            CanonicalName
               InstallInfo
                  HideIconsCommand = command line
                  ReinstallCommand = command line
                  ShowIconsCommand = command line
                  IconsVisible = 1

コマンド ラインでは、ファイルへの完全修飾絶対パスを指定し、その後にオプションのコマンド ライン オプションを指定する必要があります。 コマンド ライン内のスペースが誤って解釈されないように、引用符を適切に使用します。

再インストール コマンド

ReinstallCommand 値で宣言された再インストール コマンド ラインは、ユーザーが [コンピューターの既定] ページを使用して、クライアントの種類の既定値としてプログラムを選択するときに実行されます。 Windows Vista 以降では、このページへのアクセスには管理者特権レベルが必要です。 Windows 8 では、[コンピューターの既定][既定のプログラム] の両方に同じ名前を使用してアプリケーションを登録した場合、そのアプリケーションの [既定のプログラム] で指定された既定値が現在のユーザーに適用され、再インストールコマンドが実行されます。

再インストールコマンド ラインによって起動されたプログラムは、アプリケーションが処理できるファイルプロトコルの種類の完全なセットにアプリケーションを関連付ける必要があります。 すべてのアプリケーションでは、再インストール コマンドでハンドラー機能を確立する必要があります。 アプリケーションでは、再インストール コマンドを使用して機能を登録したり、必要に応じて既定の状態を確立したりできます。 アプリケーションが再インストール コマンドで機能と既定のハンドラーの状態の両方を実装することを選択した場合は、必要に応じて表示されるリンクやショートカットも元に戻す必要があります。 ほとんどのアプリケーションが選択する表示されるエントリ ポイントは、[アイコンの非表示] コマンドに一覧表示されます。

Note

アプリケーションでは、再インストール コマンドで処理機能を実装することを強くお勧めします。

 

再インストールプロセスが完了すると、再インストールコマンド ラインによって起動されたプログラムが終了します。 対応するプログラムは起動されません。単に既定値が登録されます。 たとえば、ブラウザーの再インストール コマンドは、ユーザーのホーム ページを開きません。

Note

Windows XP および Windows Vista のブラウザーおよび電子メール クライアントの場合、再インストール コマンドで処理機能と既定の状態の両方を確立することを選択したアプリケーションは、[スタート] メニューの上部にある対応するアイコンに登録します。 詳細については、「スタート メニューの登録」を参照してください。

 

[アイコンの非表示] コマンド

HideIconsCommand 値で宣言されたコマンド ラインは、ユーザーが [コンピューターの既定] ページで [Enable access to this program] (このプログラムへのアクセスを有効にする) ボックスをオフにすると実行されます。 このコマンド ラインでは、ユーザー インターフェイスに表示されるすべてのプログラムのアクセス ポイントを非表示にする必要があります。 具体的なガイドラインは、次の場所からショートカットとアイコンを削除することです。

  • デスクトップ アイコン
  • [スタート] メニューのリンク (スタートアップ グループを含む)
  • サイド リンク バーのリンク
  • 通知領域
  • ショートカット メニュー
  • フォルダー タスク バンド

また、このコマンド ラインでは、Run レジストリ キーで指定されているプログラムなどの自動呼び出しを防ぐ必要があります。 ベンダーでは、アプリケーションの Hide Access コールバックにこれらのガイドラインを実装することをお勧めします。

アイコンが非表示になっている場合、ファイルの種類の登録 (アプリケーション機能) を放棄する必要はありません。 また、ファイルとプロトコルの種類に対するアプリケーションの既定の状態を放棄する必要はありません。 これにより、UI でこれらの型が検出されると、ユーザー エクスペリエンスが低下する可能性があります。

アイコンを正常に非表示にしたら、次のように IconsVisible レジストリ値を 0 に更新する必要があります。

HKEY_LOCAL_MACHINE
   Software
      Clients
         ClientTypeName
            CanonicalName
               InstallInfo
                  IconsVisible = 0

IconsVisible エントリの種類 は REG_DWORD です。

SPAD の代替非表示アイコン メソッド

一部のレガシ アプリケーションでは、Hide Access の完全な実装は実用的でない場合があります。 同じ効果を実現する別の方法は、アプリケーションをアンインストールすることです。 次のセクションでは、この代替手段を実装するための動作の例とサンプル コードを示します。 一般に、独立系ソフトウェア ベンダー (ISV) は、次のことを行うので、この代替手段を回避する必要があります。

  • システムからアプリケーションを完全にアンインストールします。
  • 以前に選択した既定値を削除します。
  • アプリケーションを再インストールする UI オプションは残しません。
  • アンインストールによってアプリケーションが SPAD から完全に削除されるため、アクセスの有効化機能を使用できなくなります。

推奨されるユーザー エクスペリエンスは次のとおりです。

  • ユーザーが SPAD の [Enable access to this program] (このプログラムへのアクセスを有効にする) ボックスをオフにすると、次の UI が表示されます。

    dialog box about hiding access to the program

  • ユーザーが [OK] を選択すると、[プログラムと機能] コントロール パネルの項目が起動して、ユーザーがアプリケーションをアンインストールできるようになります。

  • Windows XP ユーザーには、このダイアログ ボックスが表示されます。

    equivalent windows xp dialog box

  • Windows XP ユーザーが [OK] を選択すると、[プログラムの追加と削除] コントロール パネル項目が起動して、ユーザーがアプリケーションをアンインストールできるようになります。

次のコードは、前述のように、アクセスを非表示にする機能の再利用可能な実装を提供します。 Windows XP、Windows Vista、Windows 7 で使用できます。

#include <windows.h>
#include <shlwapi.h>
#include <strsafe.h>

PCWSTR c_pszMessage1 = L"To hide access to this program, you need to uninstall it by ";
PCWSTR c_pszMessage2 = L"using\n%s in Control Panel.\n\nWould you like to start %s?";
PCWSTR c_pszApplicationName  = L"Sample App";

int _tmain(int argc, WCHAR* argv[])
{
    OSVERSIONINFO version;
    version.dwOSVersionInfoSize = sizeof(version);

    if (GetVersionEx(&version))
    {
        PCWSTR pszCPLName = NULL;

        if (version.dwMajorVersion >= 6)
        {
            // Windows Vista and later
            pszCPLName = L"Programs and Features";
        }
        else if (version.dwMajorVersion == 5 &&
                 version.dwMinorVersion == 1)
        {
            // Windows XP
            pszCPLName = L"Add/Remove Programs";
        }

        if (pszCPLName != NULL)
        {
            WCHAR szMessage[256], szScratch[256];
            if (SUCCEEDED(StringCchPrintf(szScratch, 
                                          ARRAYSIZE(szScratch), 
                                          c_pszMessage2, 
                                          pszCPLName, 
                                          pszCPLName)))
            {
                if (SUCCEEDED(StringCchCopy(szMessage, 
                                            ARRAYSIZE(szMessage), 
                                            c_pszMessage1)))
                {
                    if (SUCCEEDED(StringCchCat(szMessage, 
                                               ARRAYSIZE(szMessage), 
                                               szScratch)))
                    {
                        if (IDOK == MessageBox(NULL, 
                                               szMessage, 
                                               c_pszApplicationName, 
                                               MB_OKCANCEL))
                        {
                            ShellExecute(NULL, 
                                         NULL, 
                                         L"appwiz.cpl", 
                                         NULL, 
                                         NULL, 
                                         SW_SHOWNORMAL);
                        }
                    }
                }
            }
        }
    }
    return 0;
}

[アイコンの表示] コマンド

ShowIconsCommand エントリで宣言されたコマンド ラインは、ユーザーが [コンピューターの既定] ページで [Enable access to this program] (このプログラムへのアクセスを有効にする) ボックスをオンにすると実行されます。 このコマンド ラインでは、[スタート] メニュー、デスクトップ、[スタートアップ] グループのアクセス ポイントや、Run レジストリ キーで指定された通常の自動呼び出しなど、プログラムのアクセス ポイントが復元される場合があります。 ほとんどのアプリケーションに表示されるアクセス ポイントは、[アイコンの非表示] コマンドに表示されます。 アプリケーションはユーザーごとの既定値を変更しないでください。その変更は、[既定のプログラム] を使用してユーザーが行う必要があります。

アイコンが正常に表示されたら、次のように IconsVisible レジストリ値を 1 に更新する必要があります。

HKEY_LOCAL_MACHINE
   Software
      Clients
         ClientTypeName
            CanonicalName
               InstallInfo
                  IconsVisible = 1

HideIconsCommand エントリを使用してアプリケーションのアンインストールを求めるメッセージを表示した場合、ShowIconsCommand エントリは使用されません。 アンインストール プロセス中に、アプリケーションの残りの情報と共にレジストリから削除されます。

グループ プログラムの構成

Note

このセクションは Windows 2000 には適用されません。

 

システム準備の一環として、OEM は、Java クライアント プログラムの Microsoft ブラウザー、電子メール、メディア再生、インスタント メッセージング、または仮想マシンのアクセス ポイントを非表示にし、独自の既定のプログラムを指定する構成を確立できます。 OEM は、次のレジストリ値を設定することで、ユーザーがコンピューターをいつでもこの既定の構成にリセットできるようにします。

HKEY_LOCAL_MACHINE
   Software
      Clients
         ClientTypeName
            CanonicalName
               InstallInfo
                  OEMShowIcons = 1
                  OEMDefault = 1

これらのキーが設定されている場合、ユーザーは、[コンピューターの既定] ページの [コンピューターの製造元] オプションを選択して OEM 構成を復元できます。 これらのキーが設定されていない場合、[コンピューターの製造元] オプションは表示されません。

OEMShowIcons エントリが存在する場合は、ユーザーが [コンピューターの製造元] を選択した場合に適用される、指定したクライアントのアイコンの表示状態を設定します。 値が 1 の場合はアイコンが表示され、値 0 の場合はアイコンが表示されません。 OEMShowIcons が存在しない場合は、[コンピューターの製造元] を選択しても、アイコンの表示設定には影響しません。 OEMShowIconsREG_DWORD 型です。

OEMDefault エントリが存在し、1 に設定されている場合は、指定された種類の既定のクライアントの OEM 基本設定を確立します。 特定の種類のクライアントを OEM の既定値としてマークできるのは 1 つだけです。 複数のクライアントの登録に OEMDefault エントリが含まれている場合は、すべて無視され、現在のクライアントは引き続き既定のクライアントとして使用されます。 OEMDefault エントリが存在しないか、存在しても 0 に設定されている場合、ユーザーが [コンピューターの製造元] を選択した場合、その特定のクライアントは既定のクライアントとして使用されません。 OEMDefaultREG_DWORD 型です。

OEM によって確立された既定の構成にコンピューターをリセットするオプションに加えて、ユーザーには他に 3 つの構成オプションがあります。

  • コンピューターを Microsoft Windows 構成に設定します。 この場合、[コンピューターの既定] ページでは、関連する製品カテゴリに登録されているコンピューター上のすべての Microsoft および Microsoft 以外のソフトウェアにアクセスできます。 Microsoft Windows プログラムは、各カテゴリの既定のオプションとして選択されます。
  • コンピューターを Microsoft 以外の構成に設定します。 この構成では、Windows Internet Explorer、Windows Media Player、Windows Messenger、Microsoft Outlook Express へのアクセス ポイント ([スタート] メニューなど) が非表示になります。 これらのカテゴリのコンピューター上の Microsoft 以外のソフトウェアにアクセスできます。 さらに、Microsoft 以外のプログラムをカテゴリで使用できる場合は、そのカテゴリの既定値として設定されます。 カテゴリで複数の Microsoft 以外のプログラムを使用できる場合、ユーザーは既定として使用する Microsoft 以外のプログラムを選択するように求められます。
  • カスタム構成を確立します。 ユーザーは、アクセスを有効または削除し、Microsoft と Microsoft 以外のプログラムを組み合わせて、必要に応じて独自の選択を行います。 ユーザーは、カテゴリごとに既定のオプションを設定します。

ユーザーはいつでもこれらのオプションを自由に変更できます。

ブラウザー登録の例

次の例は、架空の Lit View ブラウザーの完全な InstallInfo 登録を示しています。 この場合、コマンド ライン スイッチを使用すると、Litview.exe ファイルは値ごとに必要な操作を実行できます。

HKEY_LOCAL_MACHINE
   Software
      Clients
         StartMenuInternet
            LITVIEW.EXE
               InstallInfo
                  ReinstallCommand = "C:\Program Files\LitwareInc\Litview.exe" /reinstall
                  HideIconsCommand = "C:\Program Files\LitwareInc\Litview.exe" /hideicons
                  ShowIconsCommand = "C:\Program Files\LitwareInc\Litview.exe" /showicons
                  IconsVisible = 1

引用符は埋め込みスペースを含んでいるため、パスの周囲に配置されることに注意してください。

特定のクライアントの種類の登録要素

次の情報は、このトピックの最後にある「関連トピック」セクションに記載されているリソースにも記載されています。

スタート メニューの登録

Windows XP では、アプリケーションは通常、ユーザー (HKEY_CURRENT_USER) スコープではなく、コンピューター全体 (HKEY_LOCAL_MACHINE) に既定で登録されます。 Windows Vista でユーザー アカウント制御 (UAC) が導入された場合、[スタート] メニューで [インターネット][電子メール] スロットを要求するアプリケーションは、正しい実行コンテキスト内で再インストール コマンドを実装する必要があります。

Note

Windows 7 の時点で、[スタート] メニューの [電子メール] リンクが削除されました。 ただし、このセクションで説明する登録は、既定の MAPI クライアントを割り当てるので、引き続き実行する必要があります。

 

Windows XP、Windows Vista、または Windows 7 の制限付きユーザーは SPAD にアクセスできません。 このため、開発者は、すべてのユーザーがユーザーごとのアプリケーションの既定値を管理できるように、[既定のプログラムの設定] コントロール パネル項目に登録することをお勧めします。

SPAD で行われた選択は、マシンごとの設定にのみ影響する必要があります。

レジストリ値を次のように設定します。

HKEY_LOCAL_MACHINE
   Software
      Clients
         ClientTypeName
            (Default) = CanonicalName

Note

次の情報は、Windows XP にのみ適用されます。

上記のように、コンピューター レベルの既定値 HKEY_LOCAL_MACHINE の登録に成功した場合、アプリケーションは、次のサブキーの下にある Default エントリに割り当てられた値を削除します。

HKEY_CURRENT_USER
   SOFTWARE
      Clients
         ClientTypeName

上記のように、コンピューター レベルの既定値の HKEY_LOCAL_MACHINE での登録が失敗した場合 (通常、ユーザーにサブキーへの書き込みアクセス許可がないため)、アプリケーションは次の値を設定します。

HKEY_CURRENT_USER
   SOFTWARE
      Clients
         ClientTypeName
            (Default) = CanonicalName

これにより、現在のユーザーに対してのみ正規名が登録されます。すべてのユーザーに対して登録されるわけではありません。

 

レジストリ キーを更新した後、プログラムは、既定のクライアントが変更されたことをオペレーティング システムに通知するために、null で終わる文字列 "Software\Clients\ClientTypeName" を指す wParam = 0 と lParam を使用して、WM_SETTINGCHANGE メッセージをブロードキャストします。

メール クライアントの登録

メール クライアントの場合、mailto プロトコルを使用する URL にサービスを提供するには、プログラムで HKEY_CLASSES_ROOT\mailto キーの下に設定を登録する必要があります。 これらの設定を反映する値とキーを次のキーの下に設定します。

HKEY_LOCAL_MACHINE
   Software
      Clients
         Mail
            CanonicalName
               Protocols
                  mailto

このレジストリ階層は、HKEY_CLASSES_ROOT\mailto で見つかった既存の mailto レジストリと置き換えます。 階層は同じままであり、場所のみが変更されています。 この階層の形式については、MSDN の「非同期プラグ可能プロトコルの概要とチュートリアル」を参照してください。 通常、mailto プロトコルは非同期プロトコルではなくプログラムに登録されます。この場合、「アプリケーションを URI スキームに登録する」に関するドキュメントが適用されます。

次の例は、プログラムに登録された mailto ハンドラーの登録の mailto セクションを示しています。

HKEY_LOCAL_MACHINE
   Software
      Clients
         Mail
            CanonicalName
               Protocols
                  mailto
                     (Default) = URL:MailTo Protocol
                     EditFlags = 02 00 00 00
                     URL Protocol
                     DefaultIcon
                        (Default) = %FilePath%,IconIndex
                     shell
                        open
                           command
                              (Default) = command line

EditFlags レジストリ値は、「ファイルの種類の属性の定義」セクションの「ファイルの種類」に記載されています。

完全なサンプルの登録

さまざまなクライアントの種類の完全な登録要件を示す例を次に示します。

サンプル ブラウザー

HKEY_LOCAL_MACHINE
   Software
      Clients
         StartMenuInternet
            LITVIEW.EXE
               (Default) = Lit View
               LocalizedString = @C:\Program Files\LitwareInc\ResourceDLL.dll,-123
               DefaultIcon
                  (Default) = C:\Program Files\LitwareInc\LITVIEW.EXE,1
               InstallInfo
                  ReinstallCommand = "C:\Program Files\LitwareInc\LITVIEW.EXE" /reinstall
                  HideIconsCommand = "C:\Program Files\LitwareInc\LITVIEW.EXE" /hideicons
                  ShowIconsCommand = "C:\Program Files\LitwareInc\LITVIEW.EXE" /showicons
                  IconsVisible = 1
                  shell
                     open
                        command
                           (Default) = "C:\Program Files\LitwareInc\LITVIEW.EXE" /homepage

サンプル メール ブラウザー

HKEY_LOCAL_MACHINE
   Software
      Clients
         Mail
            Lit View
               (Default) = Lit View
               DLLPath = @C:\Program Files\LItwareInc\LitwareMAPI.dll
               LocalizedString = @C:\Program Files\LitwareInc\ResourceDLL.dll,-123
               DefaultIcon
                  (Default) = C:\Program Files\LitwareInc\LITVIEW.EXE,1
               InstallInfo
                  ReinstallCommand = "C:\Program Files\LitwareInc\LITVIEW.EXE" /reinstall
                  HideIconsCommand = "C:\Program Files\LitwareInc\LITVIEW.EXE" /hideicons
                  ShowIconsCommand = "C:\Program Files\LitwareInc\LITVIEW.EXE" /showicons
                  IconsVisible = 1
               shell
                  open
                     command
                        (Default) = "C:\Program Files\LitwareInc\LITVIEW.EXE" /inbox
               protocols
                  mailto
                     (Default) = URL:MailTo Protocol
                     EditFlags = 02 00 00 00
                     URL Protocol
                     DefaultIcon
                        (Default) = C:\Program Files\LitwareInc\LITVIEW.EXE,1
                     shell
                        open
                           command
                              (Default) = "C:\Program Files\LitwareInc\LITVIEW.EXE" /mailto:%1

サンプル メディア プレーヤー

HKEY_LOCAL_MACHINE
   Software
      Clients
         Media
            Lit View
               (Default) = Lit View
               LocalizedString = @C:\Program Files\LitwareInc\ResourceDLL.dll,-123
               DefaultIcon
                  (Default) = C:\Program Files\LitwareInc\LITVIEW.EXE,1
               InstallInfo
                  ReinstallCommand = "C:\Program Files\LitwareInc\LITVIEW.EXE" /reinstall
                  HideIconsCommand = "C:\Program Files\LitwareInc\LITVIEW.EXE" /hideicons
                  ShowIconsCommand = "C:\Program Files\LitwareInc\LITVIEW.EXE" /showicons
                  IconsVisible = 1

サンプル インスタント メッセンジャー プログラム

HKEY_LOCAL_MACHINE
   Software
      Clients
         IM
            Lit View
               (Default) = Lit View
               LocalizedString = @C:\Program Files\LitwareInc\ResourceDLL.dll,-123
               DefaultIcon
                  (Default) = C:\Program Files\LitwareInc\LITVIEW.EXE,1
               InstallInfo
                  ReinstallCommand = "C:\Program Files\LitwareInc\LITVIEW.EXE" /reinstall
                  HideIconsCommand = "C:\Program Files\LitwareInc\LITVIEW.EXE" /hideicons
                  ShowIconsCommand = "C:\Program Files\LitwareInc\LITVIEW.EXE" /showicons
                  IconsVisible = 1

サンプル Virtual Machine for Java

HKEY_LOCAL_MACHINE
   Software
      Clients
         JavaVM
            Lit View
               (Default) = Lit View
               LocalizedString = @C:\Program Files\LitwareInc\ResourceDLL.dll,-123
               DefaultIcon
                  (Default) = C:\Program Files\LitwareInc\LITVIEW.EXE,1
               InstallInfo
                  ReinstallCommand = "C:\Program Files\LitwareInc\LITVIEW.EXE" /reinstall
                  HideIconsCommand = "C:\Program Files\LitwareInc\LITVIEW.EXE" /hideicons
                  ShowIconsCommand = "C:\Program Files\LitwareInc\LITVIEW.EXE" /showicons
                  IconsVisible = 1

例として登場する企業、組織、製品、ドメイン名、電子メール アドレス、ロゴ、人物、場所、およびイベントはすべて架空のものです。 これらは、実在する会社、組織、製品、ドメイン名、電子メール アドレス、ロゴ、人物、場所、および出来事とはまったく関係ありません。

既定のプログラム

Windows の [スタート] メニューでインターネット ブラウザーまたは電子メール クライアントを登録する方法

Internet Explorer クライアント レジストリ のレイアウト (「クライアント レジストリ キーの定義」セクションを参照)

非同期プラグ可能プロトコルの概要とチュートリアル

アプリケーションを URI スキームに登録する