查找特定文件扩展名的默认应用程序(即使由metro应用程序提供)

时间:2015-06-09 05:52:00

标签: winapi windows-8 windows-7 microsoft-metro windows-8.1

如何找到特定文件扩展名的默认应用程序?

这似乎取决于Windows的版本,但是我发现的最佳选项似乎是在shlwapi中使用AssocQueryString,这似乎对某些类型的应用程序非常有效。

然而,它在Windows 8中失败,可能是因为默认的pdf查看器有一个地铁“App”。

我想知道的原因是,如果有默认应用程序,我可以启动给定文件的默认应用程序。   - 否则,我很乐意给出一条消息:“文件已生成,但您没有安装任何查看器来显示它。”

1 个答案:

答案 0 :(得分:0)

答案是使用os.startfile(在python中),它似乎等同于ShellExecute(和ShellExecuteEx),尽管有简化的界面。

try:
    os.startfile(r'abspath/to/file', 'open)
except WindowsError:
    os.startfile(r'abspath/to', 'open') # Fallback to opening directory.

对Jonathan和David的信任,他建议找到应用程序路径的原始方法不再适用于metro-apps。事实证明,无论如何,申请路径并不是非常重要。