シールドオーバーレイが残ったままになる

背景:アイコンオーバーレイ

Vistaでは管理者としてログインしている場合でも、デスクトップは標準ユーザのプロセスになっています。そして管理者権限が必要になる処理のエントリポイント(メニューやボタンなど)にシールド(盾)アイコンをつけておき、そこを通過する時にユーザの承認を得るようになっています。(UAC)
その一環として、あるプログラムが「管理者として実行することを必要とする」とOSが判断した場合、自動的にプログラムアイコンにシールドのオーバーレイがつけられます。その判断は以下のように行われます。

発生した問題

Squeakland for Vistaインストーラを開発していました。VMsqueak.exeは管理者特権は不要なので、RequestExecutionLevel=asInvokerというマニフェストを与えてあります。
しかしインストールした結果の squeak.exeのアイコンにシールドオーバーレイがついています。さらに不思議なことは、シールドがついているにも関わらず、起動時に昇格の承認が行われません。
これはプログラムをアンインストール→インストールしなおしても解消されません。

原因と解決策

開発の過程で、管理者権限を必要とするマニフェストを与えてそれをインストールしたことがありました。どうもその時のシールドつきアイコンイメージがキャッシュされていたようです。
VistaにはTweakUIがないため、以下の手順により手作業でアイコンキャッシュを再構築します。

  1. コマンドプロンプトを管理者とし起動
  2. cd %UserProfie%\AppData\Local
  3. attrib -h iconcache.db
  4. delete iconcachedb
  5. エクスプローラを再起動

これにより、正しいアイコンイメージになりました。