一部の標準プロパティと一部のカスタム プロパティを使用して、カスタム ファイル形式用のシェル プロパティ ハンドラを実装しました。エクスプローラーでファイルを参照すると、プロパティが適切に表示されますが、ファイルが検索結果に表示されると表示されません。エクスプローラーが検索結果を表示するときに、プロパティ ハンドラーを照会していないようです。
私の質問は次のとおりです。エクスプローラーが検索結果にアイテムを表示するとき、アイテムのプロパティはどこで検索しますか? 適切なハンドラーを照会しますか、それともある種の検索キャッシュのどこかを探しますか?
ハンドラーを照会する場合は、ハンドラーが呼び出されない理由を調査します。(登録エラーかもしれません。) 検索キャッシュにある場合は、ファイルのインデックスが適切に作成されていない理由を調査します。
2 つ目の質問:検索結果ペインは、標準プロパティの限られたサブセットに制限されていますか? つまり、ここで興味深いプロパティを表示することをあきらめるべきでしょうか?
いくつかの観察:
- 私たちのファイル形式は、.msg (Outlook 電子メール メッセージ) を .msga に名前を変更しただけです。ハンドラーは、.msg ファイル形式の読み取り方法を認識しています。
- プロパティ値がブラウズ モードで正しく表示されます。
- 検索モードでは表示されません。
- プロパティ値は、どちらのモードでも、エクスプローラーの詳細ペインに正しく表示されます。
- 一部の標準プロパティは検索結果に OK と表示されますが、その他のプロパティは表示されず、カスタム プロパティも表示されません。たとえば、これらはすべて OK と表示されますが、ハンドラーによって処理されません:
System.ItemName
、System.ItemUrl
、。これらはハンドラーで使用できますが、表示されません: 、、。System.Size
System.DateCreated
System.Title
System.Message.FromAddress
System.Message.DateSent
HKCR\<progid>
ContentViewModeForSearch などを編集すると表示が適応するため、エクスプローラーは明らかにレジストリ キーを読み取っています。- 私たちの .msga ファイル タイプは、インデックス付きファイル タイプとしてコントロール パネルに表示され、ファイルはインデックス付きディレクトリにあります。そして今朝、インデックス全体を再構築しました。
- フィルターは実装していません。コントロール パネルには、.msga に「Office Outlook MSG IFilter」を使用していると表示されます。(これがどのように理解されたのかはわかりません。プロジェクトの早い段階でレジストリ設定をコピーしたか、プレビューに Outlook を使用しているため、Windows が推測したのかもしれません。)
- ハンドラーは IPropertyStore を実装していますが、そのメソッドは呼び出されないようです。(検索インデクサーがアクセスできるファイルへのログ記録を実装しましたが、それについては確信が持てません。)
- インデックス作成中に Event Viewer に Gatherer エラー 3036 が表示される: "
The content source <csc://{S-1-5-21-2153095834-1917727522-598830505-500}/> cannot be accessed.
" SID は私のユーザー アカウントだと思うので、特権を持たないものにインデックスを作成しようとしているのだろうかと思います。