如何在尝试Process.Start()之前以编程方式检查文件是否存在文件关联?

我的.Net Windows窗体应用程序生成一个PDF报告,我想要显示给用户。

而不是假设客户端电脑安装了PDF查看器,并盲目地将PDF在操作系统上打开, 是否有办法检查客户端上的文件关联列表 ,然后显示“ 您需要一个PDF查看器应用程序安装 – 这里有几个build议.. “对话框,如果PDF不是注册types?

我发现了许多关于更改或注册文件关联的问题和答案,但我只是想简单地查询列表,而不是更改它。

我想要一个适用于Windows XP以上的解决scheme(WinXP,Vista,Win7)。

谢谢你的帮助

最好不要直接使用注册表,而要依靠Windows API。 这是一个提供.NET解决方案的SO链接: 如何获得基于扩展名的文件类型信息? (而不是MIME)在C#

我发现在注册表中有一个.pdf键,也许它可以帮助你:

Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\.pdf] "Content Type"="application/pdf" @="AcroExch.Document" [HKEY_CLASSES_ROOT\.pdf\OpenWithList] @="" [HKEY_CLASSES_ROOT\.pdf\OpenWithList\AcroRd32.exe] @="" [HKEY_CLASSES_ROOT\.pdf\ShellEx] [HKEY_CLASSES_ROOT\.pdf\ShellEx\{8895b1c6-b41f-4c1c-a562-0d564250836f}] @="{DC6EFB56-9CFA-464D-8880-44885D7DC193}"