在 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中文网其他相关文章!