コンテキストメニュー/このアプリケーションで開く の中身が重複したときはlsregisterコマンドを使う

自分用の備忘録

コンテキストメニュー」 > 「このアプリケーションで開く」の中身が重複したとき

正常なら、たとえば画像を選んでコンテキストメニュー(右クリックメニュー)の「このアプリケーションで開く」を選ぶとこのようにきれいにアプリケーションが並びます。

ところが、アプリケーションフォルダ以外に、アプリケーションフォルダのバックアップなどが複数存在する場合、それらすべてのアプリケーションがご丁寧にすべてのバージョンまでリストアップされてしまうことがあります。

今となっては不確かなのですが、SnowLeopardまでは Spotlight で検索対象から外しておけばリストアップされなかったような記憶があるのですが、Leopard では効き目がありません。今回もその状態になってしまい、画面のスナップショットを撮っておけばよかったのですがディスプレイの縦幅に収まらないぐらいの量がリストアップされる状態になってしまいました。

以下の方法は SnowLeopard 以前で有効のようです。

mac OSX で「このアプリケーションで開く」の中にアイコンが重複した場合の修復方法

Lion では

How to reset the Contextual Menu in Lion? ― finiteloops.com

この記事を参考にしたら治りました。インデックス?を作り直すのにかなりの時間かかっていましたが。

まとめると…

コンテキストメニューの再構築 lsregisterコマンド

ターミナル.app で以下のコマンドを実行します。

  • SnowLeopardまで
/System/Library/Frameworks/ApplicationServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain system -domain local -domain user
  • Lion の場合
/System/Library/Frameworks/CoreServices.framework//Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -kill -r -domain local -domain user

lsregisterコマンドとは何者か?

実際lsregisterコマンドとは何者か? 初めて知ったのでちょっと検索したら、Launchサービス、Spotlight とも関連があるようです。

Mac OS X: プロパティリスト (plist) と Launch Services -- Stack-Style

.plistを読み込んで、ファイルとアプリケーションの関連づけを担当するサービス。Spotlightのインポーターもこのサービスに登録する。

Launch Services に登録された情報を制御するには、ターミナルから lsregister コマンドを使う。

以上備忘録