現在のユーザーのファイル拡張子に現在関連付けられているプログラムの名前を取得する必要があります。ファイルを右クリックしてプロパティを選択すると、「Opens with」行の右側にあるプログラム名が必要になります。
たとえば、".xls" の場合、"Microsoft Office Excel" という回答、またはユーザーが .xls ファイルを開くための既定のプログラムとして使用している任意のプログラムを取得できるようにしたいと考えています。
HKEY_LOCAL_MACHINE、HKEY_CURRENT_USER、または HKEY_USERS でも指定されている可能性があるため、HKEY_CLASSES_ROOT に移動してそれを選択するほど簡単ではないと判断しました。
おそらく、私が知る必要があるのは、Windows がこれを決定するために使用する序列と、各場所へのアクセス方法だけです。もちろん、これを行うための Windows API 呼び出しが理想的です。
これは、次のような質問です: How to get icon and description from file extension using Delphi? しかし、その質問は、拡張機能の説明と関連するプログラムのアイコンを取得する方法のみに答えました。それを拡張して、関連するプログラムの名前も取得する方法が見つかりませんでした。
Delphi 2009 を使用していますが、Windows XP、Vista、および 7 で動作するソリューションが必要です。
回答ありがとうございます。
結局、実行可能ファイルの名前がレジストリにないというのが私の信念のようです。そして、名前を付ける Windows API を広範囲に探した後、見つけられませんでした。
そのときのメフの答えが一番だと思います。プログラムの実行可能ファイルに含まれる情報から実行可能ファイルの名前を取得します。
フォローアップ: 「デフォルトのテキスト エディタでファイルを開くにはどうすればよいですか?」に対する David Hefferman の回答を見つけました。別の拡張子の既定のプログラムを使用して 1 つのプログラムを開くための優れたソリューションを提供します。