调用Process.Start打开本地HTML文件时抛出Win32Exception异常
解决Process.Start打开本地HTML文件抛出"无效OS平台应用"异常的问题
问题分析
直接调用Process.Start(_helpURL)在.NET Core/.NET 5+环境下会报错,原因是该环境中Process.Start(string)重载默认将传入路径视为可执行程序,而非需要通过系统默认关联程序打开的文件,而HTML文件本身不是可执行文件,因此触发Win32Exception。
解决方案
显式使用ProcessStartInfo并设置UseShellExecute = true,让系统调用默认关联程序打开HTML文件:
修改后的代码
private static void OpenHelpPage() { // 用绝对路径避免相对路径的工作目录问题 string helpFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "HelpPage.html"); ProcessStartInfo psi = new ProcessStartInfo(helpFilePath) { UseShellExecute = true }; Process.Start(psi); }
关键说明
UseShellExecute = true:启用系统shell处理文件关联,让系统自动调用默认浏览器打开HTML文件,这是解决问题的核心。- 绝对路径适配:通过
AppDomain.CurrentDomain.BaseDirectory获取程序运行目录,拼接HTML文件路径,避免因工作目录变化导致的文件找不到问题。
补充验证
- 可提前用
File.Exists(helpFilePath)校验文件是否存在,排除路径错误。 - 手动双击HTML文件,确认系统已正确将.html文件关联到默认浏览器。
内容的提问来源于stack exchange,提问作者MilliOnTealeaves
相关产品推荐
相关产品推荐

