C# .NET 5.0调用Process.Start打开PDF报错如何解决?
问题原因
.NET 5.0 基于 .NET Core 核心实现,和传统 .NET Framework 中 Process.Start 的默认行为存在差异:直接传入非可执行文件路径时,默认不会调用系统 Shell 匹配关联的默认程序打开文件,只会尝试将路径作为可执行文件启动,因此触发「不是当前操作系统平台的有效应用程序」报错。
解决方案
方案1:显式配置 ProcessStartInfo 启用 Shell 执行
通过指定 UseShellExecute = true 还原 .NET Framework 中的默认行为,系统会自动调用已关联的默认PDF阅读器打开文件:
using System.Diagnostics; // 启动PDF文件 Process.Start(new ProcessStartInfo(@"C:\path\to\pdf\file.pdf") { UseShellExecute = true });
方案2:通过资源管理器代理打开
也可以直接调用系统 explorer.exe 来启动对应文件,无需额外配置启动参数:
using System.Diagnostics; Process.Start("explorer.exe", @"C:\path\to\pdf\file.pdf");
注意事项
- 调用打开逻辑前建议先校验目标PDF文件是否存在,避免无效路径触发额外异常
- 确保程序运行身份拥有目标PDF文件所在路径的读取权限
内容的提问来源于stack exchange,提问作者Felipe K. Bernardino
相关产品推荐
相关产品推荐

