# パッケージ実行可能ファイルのマッピング（クラシック）

実行可能ファイルがどのパッケージに属しているかを見つけるのは常に簡単ではなく、時には実行可能ファイルがパッケージに属していないこともあるため、100% 正確であることは困難です。 以下のヒューリスティックを使用して、どの実行可能ファイルがどのパッケージに属しているかを識別する手助けをしてください。

実行可能ファイルを例としてタプルパス、ハッシュ、名前/サイズと定義しましょう。例えば `[PATH,HASH,FILE]`。

MSI パッケージには、通常バイナリから成る埋め込みリソースにリンクされたインストールとアンインストールの両方のスクリプトが含まれています。 インストールされると、システムはマシンに MSI を保存しますが、ディスク容量を節約するためにそのリソースを削除します。 しかし、システムはほとんどの埋め込みバイナリを名前かサイズかのいずれかでリストします。 さらに、MSI はインストールディレクトリを定義します。

MSI については、いくつかのインストールされたバイナリは `{HASH}` または `{FILE}` のいずれかを持たないかもしれませんが、それでも `[{HASH},{FILE},DIR]` のタプルがあります。

他の種類のパッケージはブラックボックスとして扱われます。 この場合、インストールディレクトリが存在する場合はそれを、そうでない場合はアンインストールプログラムのパスを取得し、`[{},{},DIR]` のタプルを持ちます。

次のいずれかの条件が満たされた場合、実行可能ファイル `[PATH,HASH,FILE]` はパッケージ `[{HASH},{FILE},{DIR}]` に関連付けられます:

* HASH が `{HASH}` に含まれている
* DIR が `{DIR}` に等しい
* DIR の親が `{DIR}` に等しい
* FILE が `{FILE}` に含まれている

システムが特定のパッケージを実行可能ファイルに関連付けられない場合、その実行可能ファイルをデフォルトの「不明」パッケージに関連付けます。

システムは以下のディレクトリを除外します:

* WINDOWS\
  例えば `C:\WINDOWS`
* SYSTEM\
  例えば `C:\WINDOWS\system32`
* PROGRAM\_FILES\_COMMON\
  例えば `C:\Program Files\Common Files\Common Files`
* PROGRAM\_FILES\
  例えば `C:\Program Files\Common Files`
* COMMON\_STARTMENU\
  例えば `C:\Documents and Settings\LeeT\Start Menu`
* COMMON\_PROGRAMS\
  例えば `C:\Documents and Settings\LeeT\Start Menu\Programs`
* COMMON\_STARTUP\
  例えば `C:\Documents and Settings\gjaunin\Start Menu\Programs\Startup`
* COMMON\_MUSIC\
  例えば `C:\Documents and Settings\LeeT\Favorites`
* COMMON\_FAVORITES\
  例えば `C:\Documents and Settings\LeeT\Favorites`
* COMMON\_DOCUMENTS\
  例えば `C:\Documents and Settings\LeeT\My Documents`
* COMMON\_DESKTOPDIRECTORY\
  例えば `C:\Documents and Settings\LeeT\Desktop`
* COMMON\_APPDATA\
  例えば `C:\Documents and Settings\LeeT\Application Data`
