Windows でファイル タイプのデフォルト アプリケーションを見つける
開発者は多くの場合、特定のファイル タイプに関連付けられたデフォルト アプリケーションを見つける必要があります。これは、特定のファイル拡張子のデフォルトのエディターを呼び出すなどのタスクにとって重要です。
これを実現するには、System.Diagnostics.Process.Start を使用して、デフォルトのアプリケーションでファイルを開くことを検討できます。ただし、このアプローチには制限があり、標準以外の拡張子を持つファイルを開くことはできません。
信頼できる解決策には、Win32 API 関数 AssocQueryString の使用が含まれます。この関数を使用すると、ファイルの種類に関連付けられたデフォルトのアプリケーションをオペレーティング システムに問い合わせることができます。
C# で AssocQueryString を利用する方法は次のとおりです。
using System.Runtime.InteropServices; [DllImport("Shlwapi.dll", CharSet = CharSet.Unicode)] public static extern uint AssocQueryString( AssocF flags, AssocStr str, string pszAssoc, string pszExtra, [Out] StringBuilder pszOut, ref uint pcchOut ); [Flags] public enum AssocF { // ... } public enum AssocStr { // ... } public static string AssocQueryString(AssocStr association, string extension) { const int S_OK = 0; const int S_FALSE = 1; uint length = 0; uint ret = AssocQueryString(AssocF.None, association, extension, null, null, ref length); if (ret != S_FALSE) { throw new InvalidOperationException("Could not determine associated string"); } var sb = new StringBuilder((int)length); ret = AssocQueryString(AssocF.None, association, extension, null, sb, ref length); if (ret != S_OK) { throw new InvalidOperationException("Could not determine associated string"); } return sb.ToString(); }
AssocQueryString を呼び出して、目的の関連付けを指定すると、デフォルトのアプリケーションへのフルパスを取得できます。これにより、ファイルに標準の拡張子がない場合でも、特定のファイル タイプのデフォルトのエディタまたはプロセッサと直接対話できるようになります。
以上がWindows で特定のファイル タイプのデフォルト アプリケーションをプログラムで見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。