ハンドラは、特定の拡張子のファイルにアイコンを表示するために使用します。ハンドラを設定していればこのようなファイルにもアイコンが表示されるようになります。ハンドラのオブジェクトは、IExtractIconとIPersistFileを実装する必要があります。IPersistFileはアイコンの表示対象となるファイルを伝えるために使用します。GetClassIDからGetCurFileまでがIPersistFileのメソッドになります。下位互換性の事を考えてIPersistFileを実装するようにしています。IPersistFileの中で呼ばれるメソッドはLoadだけです。このメソッドでS_OKを返すとGetIconLocationが呼ばれることになります。参照することもないと思われます。単純にS_OKを返すだけで問題ありません。GetIconLocationでは、アイコンを格納しているファイルのパスとアイコンのインデックスを返すことになります。pwFlagsにGIL_NOTFILENAMEを指定した場合はこれを省略することができます。これでも特に問題はないことになります。第4引数にアイコンのインデックスを格納することになるでしょう。GetModuleFileNameを呼び出すことが予想されます。Extractを呼び出してアイコンのハンドルを取得することになります。今回はLoadImageで取得した既定のアイコンハンドルを返しています。ハンドラを登録するには、次に示すレジストリキーを作成することになります。アイコンの表示が終了するとアンロードされます。実際にアイコンが反映されるためには、シェルを再起動する必要があります。