ニックネーム キャッシュ
適用対象: Outlook 2013 | Outlook 2016
Microsoft Office Outlook 2007、Microsoft Outlook 2010、Microsoft Outlook 2013は、"オートコンプリート ストリーム" とも呼ばれるニックネーム キャッシュと対話します。オートコンプリート ストリームは、Outlook がオートコンプリート リストを保持する場所です。これは、ユーザーが電子メールを作成しているときに[宛先]、[Cc]、[Bcc] の各編集ボックスに表示される名前の一覧です。 このトピックでは、Outlook 2007、Outlook 2010、および Outlook 2013 がオートコンプリート ストリームと対話する方法について説明し、ファイルのバイナリ形式とオートコンプリート ストリームと対話するための推奨される方法についても説明します。
Outlook 2010 または Outlook 2013 と対話するアプリケーションの場合、オートコンプリート ストリームは MAPI プロパティとして格納され、MAPI またはメッセージの PropertyAccessor オブジェクトを使用して変更できます。 PropertyAccessor オブジェクトは、Outlook 2010 または Outlook 2013 オブジェクト モデルで公開されます。
Outlook 2007 オブジェクト モデルまたは MAPI API には依存関係がありません。 そのため、Outlook 2007 内のオートコンプリート ストリームに変更を加えるアプリケーションは、任意のプログラミング言語を使用して記述できます。
オートコンプリート Streamとの対話
メッセージに 対して To、 Cc、または Bcc の編集ボックスにアクセスすると、オートコンプリート ストリームが読み込まれ、ユーザー名の一覧が表示されます。 Outlook は、次の 2 つの方法でオートコンプリート ストリームと対話します。
オートコンプリート ストリームの読み込み
オートコンプリート ストリーム内のデータに対する変更を保存する
オートコンプリート データを格納する方法は、Outlook 2007 と Outlook 2010 または Outlook 2013 の間で次のように異なります。
Outlook 2007
Outlook 2007 の場合、オートコンプリート ストリームは、プロファイルと同じ名前と拡張子が .nk2 のファイルに格納されます。 たとえば、"outlook" の既定のプロファイルが使用されている場合、ファイルは "outlook.nk2" と呼ばれます。 .nk2 ファイルは %APPDATA%\Microsoft\Outlook に格納されます。 ニックネーム キャッシュ バイナリ ファイル形式の詳細については、「 Outlook 2003/2007 NK2 ファイル形式と開発者ガイドライン」を参照してください。
Outlook 2010 と Outlook 2013
Outlook 2010 または Outlook 2013 は、メール アカウントの配信ストアの受信トレイの [関連コンテンツ] テーブル内のメッセージからオートコンプリート ストリームを読み取ります。 この非表示メッセージには、IPM のメッセージ クラスと件名があります。Configuration.Autocomplete。 オートコンプリート ストリームは、このメッセージの PR_ROAMING_BINARYSTREAM プロパティ (PidTagRoamingBinary 標準プロパティ) に格納されます。 オートコンプリート データは、%USERPROFILE%\AppData\Local\Microsoft\Outlook\RoamCache にあるオートコンプリート .dat ファイルに一時的にキャッシュされる場合があります。 ただし、.dat ファイルはキャッシュのみで、ユーザーが Outlook 2010 または Outlook 2013 を終了したときに配信ストアに書き戻すために使用されません。
オートコンプリート Streamの読み込み
Outlook は、アドレス指定機能を持つアイテムが初期化されるたびにオートコンプリート ストリームを読み込みます。 たとえば、メール アドレスは、新しいメール、メールの返信、連絡先アイテム、会議出席依頼などに使用されます。 データを読み込むため、Outlook はストリームのすべての内容をメモリに読み込みます。
オートコンプリート操作の場合、Outlook は、outlook.exe プロセスの有効期間中、このメモリ内構造体と排他的に対話します。 Outlook では、シャットダウン時にのみ構造が保存されます。 このプロセスの詳細については、次のセクション「オートコンプリート Streamの保存」を参照してください。
オートコンプリート Streamの保存
次のいずれかの方法でオートコンプリート リストが変更された場合、Outlook はシャットダウン時にオートコンプリート ストリームを保存します。
名前の解決、アドレス帳ダイアログからの受信者の選択、またはリストにまだ含まれていない受信者へのメールの送信によって、新しいニックネーム エントリが追加されます。
エントリは、リスト内の既存の受信者にメールを送信することによって変更されます。
UI を介してユーザーによってエントリが削除されます。
このトピックに関連しないその他の軽微なシナリオ。
オートコンプリート データに対する変更を保存するには、メモリ内構造を Autocomplete Streamに書き戻す必要があります。 Outlook 2007 と対話すると、ストリームはローカルの .nk2 ファイルに保存されます。 Outlook 2010 または Outlook 2013 の場合、オートコンプリート ストリームは、メール アカウントの配信ストアの受信トレイの [関連コンテンツ] テーブルに書き戻されます。
推奨事項
オートコンプリート ストリームを部分的に変更しないでください。 サポートされている操作は、1) オートコンプリート ストリーム全体をメモリに読み取り、2) メモリ構造を変更し、3) メール アカウントの配信ストアの受信トレイの関連コンテンツ テーブル (Outlook 2010 または Outlook 2013 の場合) またはローカル .nk2 ファイル (Outlook 2007) にストリーム全体を書き戻す操作です。
Outlook の実行中は、オートコンプリート ストリームと対話しないでください。 ストリームの変更中に Outlook が実行されている場合は、シャットダウン時に変更が上書きされる可能性があります。
microsoft Outlook 2003 で使用されるオートコンプリート ストリームに、PT_MV_UNICODE型とPR_MV_STRING8型のプロパティを書き込む必要はありません。 これらのプロパティは、Outlook 2007、Outlook 2010、および Outlook 2013 でのみ認識されます。
Outlook 2007 と対話するコードを開発する場合は、標準のファイル ロック API (C/C++ の LockFile や C# の FileStream.Lock など) を使用して読み書きしているときに、.nk2 ファイルを他のプロセスによる変更からロックすることをお勧めします。
オートコンプリート ストリームの行セットからの型のプロパティのみを変更します。 オートコンプリート ストリームのプロパティとプロパティの種類の詳細については、「オートコンプリート Stream」を参照してください。