Core Services の undocumented な関数 _LSCopyAllApplicationURLs
を使うと、すべてのアプリケーションのパスを取得できる。
// ヘッダではプロトタイプ宣言されていないので自前で宣言する
void _LSCopyAllApplicationURLs(CFArrayRef *appURLs);
- (NSArray *)allApplicationURLs {
CFArrayRef appURLs;
_LSCopyAllApplicationURLs(&appURLs);
return CFBridgingRelease(appURLs);
}
すべての アプリケーションとは、 /Applications
ほかいくつかのシステム標準アプリケーションフォルダに入っているアプリケーションすべてという意味。それ以外のフォルダに入っているアプリケーションは対象にならない。
この関数はシステムにキャッシュされたパスを返すので、アプリケーションフォルダを走査するコードより高速に動作する。
参考にしたページ: AllApplications - CocoaDev