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

本文关键字:文件 方式 编程 检查 存在 是否 关联 Process Start 之前 | 更新日期: 2023-09-27 17:57:34

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

与其只是假设客户端PC安装了PDF查看器,然后盲目地将PDF扔到操作系统中打开,有没有办法事先检查客户端上的文件关联列表,然后显示一个"您需要安装PDF查看器应用程序-这里有几个建议…"对话框,如果PDF不是注册类型?

我发现了很多关于更改或注册文件关联的问题和答案,但我只想找到一种简单的方法来查询列表,而不是更改它

我想要一个适用于Windows XP以后版本(WinXP、Vista、Win7)的解决方案。

感谢您的帮助

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

最好不要直接使用注册表,而是依赖Windows API。下面是SO上的一个链接,它提供了一个.NET解决方案:如何根据扩展名获取文件类型信息?(非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}"